【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld
分析
一、简述使用步骤
一般而言,对于一个简单的程序,Irrlicht引擎的一般使用步骤如下:
预处理:
(1)包含 <irrlicht.h> 头文件
#include <irrlicht.h>
(2)设置命名空间
using namespace irr;
设置命名空间会让之后的编程稍微轻松一点,就像使用C++进行编程时,使用using namespace std;一样,std::cout<<→cout<<。
(3)通知编译器连接irr库文件
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#endif
如果不进行如上操作的话,在程序编译的过程中,会在Link部分报错。所以说这一步是非常重要的,一定不要忘记。
到这里,预处理的步骤就完成了,接下来,我们要给程序提供一个main函数,作为程序的入口。
在main函数中需要做的步骤如下:
(1)创建设备
(2)获取场景管理器,GUI环境,视频设备的指针,使用他们进行渲染控制
(3)在device->Run()的情况下,进行循环。在driver->beginScene()和driver->endScene()中进行所有内容的渲染控制。(我们之前提到过,driver是IVideoDriver的指针,负责2D\3D的渲染实现)
(4)释放设备
一般而言,使用device->drop();语句就实现了设备的释放。
就这样,一个非常基本的基于Irrlicht引擎的程序就完成了,我们可以在这个基础之上,进行各种添加操作,比如说添加一个mesh模型,添加一个FPS摄像机,添加地形,添加天空盒等等。这些操作在未来的文章中会一一提到。
二、helloWorld程序示例
下面,为大家展示一个根据上边所述流程而写的简单程序,在程序中,在需要理解、注意的部分添加了注释,用来解释语句在程序中的作用,希望会对你的理解有所帮助!
//引入头文件
#include <irrlicht.h> //设置命名空间,开始的时候进行如下声明,可以省去以后写irr::core:: 的麻烦
using namespace irr; using namespace core;
/*scene是场景管理,包括场景节点,摄像机,例子系统,MESH,公告板,灯光,动画器,天空盒,地形等绝大部分 的3D功能*/
using namespace scene;
/*video主要负责对视频驱动的设置,2D和3D的渲染都在这里实现,包括了纹理,材质,灯光,图片,顶点等渲染属 性的控制*/
using namespace video;
using namespace io;
using namespace gui; //为了能够使用Irrilcht.dll文件,要通知编译器连接Irrlicht.lib 库文件
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#endif int main()
{
//创建设备
IrrlichtDevice *device =
createDevice( video::EDT_SOFTWARE, dimension2d<u32>(, ), ,
false, false, false, ); if (!device)
return ; //设置窗口名称
device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo"); IVideoDriver* driver = device->getVideoDriver();
ISceneManager* smgr = device->getSceneManager();
IGUIEnvironment* guienv = device->getGUIEnvironment(); //在窗口内添加一个静态文本
guienv->addStaticText(L"Hello World! This is the Irrlicht Software renderer!",
rect<s32>(,,,), true); //场景中加入摄像机,在(0,30,-40)位置,视点位置在(0,5,0)
smgr->addCameraSceneNode(, vector3df(,,-), vector3df(,,)); while(device->run())
{ //所有的绘制都必须在beginScene()和endScene()之间
//beginScene()清空屏幕填补上颜色SColor(255,100,101,140)
driver->beginScene(true, true, SColor(,,,)); smgr->drawAll();
guienv->drawAll(); driver->endScene();
} //程序结束的时候,记得要删除设备对象
device->drop(); return ;
}
【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld的更多相关文章
- Java入门程序HelloWorld
程序开发步骤说明 开发环境已经搭建完毕,可以开发我们第一个Java程序了.Java程序开发三步骤:编写.编译.运行.如下图所示 详解: 编写源程序:通俗来说就是我们通过Java的语法自己写的代码 编译 ...
- 【Irrlicht鬼火引擎】 认识鬼火引擎
一.Irrlicht简介 (1)概念 Irrlicht引擎是一个用C++书写的高性能实时3D引擎,可以应用于C++程序或者.NET语言中.通过使用Direct3D(Windows平台).OpenGL ...
- Qt 使用irrlicht(鬼火)3D引擎
项目中需要加载简单的3D场景.资深老前辈推荐使用开源小巧的引擎irrlicht. 关于irrlicht,来之百度百科 Irrlicht引擎是一个用C++书写的高性能实时的3D引擎,可以应用于C++程序 ...
- BOM 浏览器对象模型_渲染引擎_JavaScript 引擎_网页加载流程
1. 浏览器核心的两个组成部分 渲染引擎 将网页代码渲染为用户视觉可以感知的平面文档 分类: Firefox Gecko 引擎 Safari WebKit 引擎 Chrom ...
- irrlicht鬼火
中文鬼火 开源3d引擎 ogre osg等 libpng png图片处理 jpeg jpg图片库
- 【关于微软的上一代模板引擎 T4引擎】
导语:国内有名的动软代码生成器用的就是T4引擎......可以自己下载下来用用,批量生成固定模式的代码文件,十分有用........... 示例代码:示例代码__你必须懂的T4模板:浅入深出.rar ...
- MySQL引擎各个引擎对比介绍
1.什么是存储引擎? 存储引擎类似于录制的视频文件,可以转换成不同的格式,如MP4,avi等格式,而存储在我们的磁盘上也会存在于不同类型的文件系统中如:Windows里常见的NTFS,fat32等.存 ...
- 大数据学习day32-----spark12-----1. sparkstreaming(1.1简介,1.2 sparkstreaming入门程序(统计单词个数,updateStageByKey的用法,1.3 SparkStreaming整合Kafka,1.4 SparkStreaming获取KafkaRDD的偏移量,并将偏移量写入kafka中)
1. Spark Streaming 1.1 简介(来源:spark官网介绍) Spark Streaming是Spark Core API的扩展,其是支持可伸缩.高吞吐量.容错的实时数据流处理.Sp ...
- mybatis入门_mybatis基本原理以及入门程序
一.传统jdbc存在的问题 1.创建数据库的连接存在大量的硬编码, 2.执行statement时存在硬编码. 3.频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 4.存在大量的 ...
随机推荐
- Codeforces Round #372 (Div. 1) B. Complete The Graph (枚举+最短路)
题目就是给你一个图,图中部分边没有赋权值,要求你把无权的边赋值,使得s->t的最短路为l. 卡了几周的题了,最后还是经群主大大指点……做出来的…… 思路就是跑最短路,然后改权值为最短路和L的差值 ...
- homework-09
这次作业主要考察C++11的简单用法,个人感觉这样的练习对我这种编程能力比较差的非常有用,加深了对C++11的理解. Lambda的用法 计算“Hello World!”中 a.字母‘e’的个数 b. ...
- Java设计模式系列之工厂模式
工厂模式将大量有共同接口的类实例化,工厂模式可以实现动态决定实例化哪一个类的对象,工厂模式在<Java与模式>中分为三类:1)简单工厂模式(Simple Factory):添加某一种类型的 ...
- UVA 796 - Critical Links (求桥)
Critical Links In a computer network a link L, which interconnects two servers, is considered criti ...
- Contest 7.23(不知道算什么)
Problem A URAL 1181 Cutting a Painted Polygon 题目大意就是说有一个N边形,让你做N-3条边,让他们的每个三角形的三个顶点颜色都不相同. 这里有一个引理 ...
- UVaLive 7267 Mysterious Antiques in Sackler Museum (if-else,枚举)
题意:给定四个矩形,要求从中选出三个,能不能拼成一个矩形. 析:说到这个题,我还坑了队友一次,读题读错了,我直接看的样例,以为是四个能不能组成,然后我们三个就拼命想有什么简便方法,后来没办法了,直接暴 ...
- C#获取当前应用程序所在路径及环境变量
一.获取当前文件的路径 string str1=Process.GetCurrentProcess().MainModule.FileName;//可获得当前执行的exe的文件名. string st ...
- window.parent != window 解决界面嵌套问题
页面在被嵌套的时,效果:,,如果用户点击“刷新”,该问题即可解决. 如果想通过代码解决的话,这个问题属于客户端的问题,不是服务器端的问题. 如果直接写:window.location.href = “ ...
- oracle批量导出AWR报告
工作需求:项目中需要把生产库中所有的AWR报告dump出来,然后导入到方便测试的数据库中.在测试库中的AWR报告需要根据dbid和实例名逐个导出,如果遇到很多再加上RAC系统,会很麻烦.在网上找了一些 ...
- 详解Android Handler的使用-别说你不懂handler
我们进行Android开发时,Handler可以说是使用非常频繁的一个概念,它的用处不言而喻.本文就详细介绍Handler的基本概念和用法. Handler的基本概念 Handler主 ...