【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld
来源:互联网 发布:a寻路算法 编辑:程序博客网 时间:2024/04/26 06:49
一、简述使用步骤
一般而言,对于一个简单的程序,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>(640, 480), 16, false, false, false, 0); if (!device) return 1; //设置窗口名称 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>(10,10,260,22), true); //场景中加入摄像机,在(0,30,-40)位置,视点位置在(0,5,0) smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0)); while(device->run()) { //所有的绘制都必须在beginScene()和endScene()之间//beginScene()清空屏幕填补上颜色SColor(255,100,101,140) driver->beginScene(true, true, SColor(255,100,101,140)); smgr->drawAll(); guienv->drawAll(); driver->endScene(); } //程序结束的时候,记得要删除设备对象 device->drop(); return 0; }
- 【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld
- 【Irrlicht鬼火引擎】 认识鬼火引擎
- 【Irrlicht鬼火引擎】 认识鬼火引擎
- 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎
- 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎
- vs2015与Irrlicht鬼火引擎
- Qt 使用irrlicht(鬼火)3D引擎
- 让Irrlicht鬼火引擎显示中文
- 鬼火引擎irrlicht一些功能资源收集
- irrlicht引擎例子001 HelloWorld
- Irrlicht(鬼火引擎)中多设备的支持
- Qt irrlicht(鬼火)3D引擎 摄像机旋转问题
- 鬼火引擎入门相关知识熟悉
- 认识鬼火引擎
- 鬼火引擎-Quake3Map
- Irrlicht引擎
- 逐个版本分析鬼火引擎
- 使用Irrlicht引擎播放动画注意事项
- 记录
- 第四章 Spring与JDBC的整合
- 在win7 64位下 可以用的串口监控软件: AccessPort
- maven配置说明 转自:http://www.blogjava.net/jianyue/articles/227932.html
- proxool配置详解
- 【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld
- 移植live555到android下遇到的问题
- 谈谈网站如何以访客为导向来进行访客维护
- iOS 各种控件默认高度(图示)
- Java学习日记(6)--多线程
- 开源项目-FragmentBasics-Fragment横竖屏动态显示
- make android 时的 libwebcore.so error
- EMOS系统架构
- io复习笔记