




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
开源 3D 游戏引擎 Irrlicht 鬼火 Example 讲解 Quake3Map 赵刚 Irrlicht 引擎自带的第 2 个 Example 叫做 Quake3Map 她演示了利用 irrlicht 引擎载入 Quake3 场景文件 pk3 的过程 程序运行起来如下图 运行 02 Quake3Map exe 的时候会先出来一个控制台窗口 按 a 再按回车 即可 表示选择 OpenGL 作为渲染 API 进入 bin 目录下的 examples 目录可以看到 02 Quake3Map 目录 双击 Quake3Map vc9 vcproj 文件打开工程文件 工程文件中只有一个 main cpp 文 件 内容如下 去除了英文注释 include include using namespace irr ifdef MSC VER pragma comment lib Irrlicht lib endif int main video E DRIVER TYPE driverType printf Please select the driver you want for this example n a OpenGL 1 5 n b Direct3D 9 0c n c Direct3D 8 1 n d Burning s Software Renderer n e Software Renderer n f NullDevice n otherKey exit n n char i std cin i switch i case a driverType video EDT OPENGL break case b driverType video EDT DIRECT3D9 break case c driverType video EDT DIRECT3D8 break case d driverType video EDT BURNINGSVIDEO break case e driverType video EDT SOFTWARE break case f driverType video EDT NULL break default return 1 IrrlichtDevice device createDevice driverType core dimension2d 640 480 if device 0 return 1 video IVideoDriver driver device getVideoDriver scene ISceneManager smgr device getSceneManager device getFileSystem addZipFileArchive media map 20kdm2 pk3 scene IAnimatedMesh mesh smgr getMesh 20kdm2 bsp scene ISceneNode node 0 if mesh node smgr addOctreeSceneNode mesh getMesh 0 0 1 1024 if node node setPosition core vector3df 1300 144 1249 smgr addCameraSceneNodeFPS device getCursorControl setVisible false int lastFPS 1 while device run if device isWindowActive driver beginScene true true video SColor 255 200 200 200 smgr drawAll driver endScene int fps driver getFPS if lastFPS fps core stringw str L Irrlicht Engine Quake 3 Map example str driver getName str FPS str fps device setWindowCaption str c str lastFPS fps else device yield device drop return 0 程序很简洁 条理也很清晰 下面讲解一下代码 首先每个使用 irrlicht 的程序都必须包含 include pragma comment lib Irrlicht lib 表示要使用 irrlicht SDK 由于 irrlicht 可以使用多种底层的绘图 API 如 Direct3D OpenGL Software 程序一开始时需要用户选择一个绘图 API video E DRIVER TYPE driverType printf Please select the driver you want for this example n a OpenGL 1 5 n b Direct3D 9 0c n c Direct3D 8 1 n d Burning s Software Renderer n e Software Renderer n f NullDevice n otherKey exit n n char i std cin i switch i case a driverType video EDT OPENGL break case b driverType video EDT DIRECT3D9 break case c driverType video EDT DIRECT3D8 break case d driverType video EDT BURNINGSVIDEO break case e driverType video EDT SOFTWARE break case f driverType video EDT NULL break default return 1 这里用字母 a 表示 OpenGL b 表示 Direct3D 9 c 表示 Direct3D 8 d 表示 Burning s Software e 表示 Software f 表示不绘图 一般选择 a 即可 用户选择的绘图 API 类型保存在变量 driverType 里 driverType 是 irrlicht 内部定义的一个叫 E DRIVER TYPE 枚举类型的对象 该枚举类型在 video 名字空间中 接下来根据用户的选择建立 irrlicht 设备对象 IrrlichtDevice device createDevice driverType core dimension2d 640 480 if device 0 return 1 当然如果设备对象建立失败那就没戏了 只有退出程序 video IVideoDriver driver device getVideoDriver scene ISceneManager smgr device getSceneManager device getFileSystem addZipFileArchive media map 20kdm2 pk3 上面这前两行只是将设备对象中的视频驱动对象 绘图 API 对象和场景 管理对象保存在临时对象中以备后用 第三行表示将一个名为 map 20kdm2 pk3 的文件加载到 irrlicht 文件系统 中 这个文件是一个压缩文件 irrlicht 引擎自己可以处理压缩文件 scene IAnimatedMesh mesh smgr getMesh 20kdm2 bsp 这行程序表示从 20kdm2 bsp 文件中建立一个带动画的网格对象 20kdm2 bsp 这个文件首先会在当前磁盘目录下查找 如果没有找到就会在 irrlicht 的文件系统中查找 前面已经往 irrlicht 的文件系统中加载了一个 map 20kdm2 pk3 文件 irrlicht 会自动解压这个压缩文件 查找里面是否有一 个名为 20kdm2 bsp 的文件 有则加载 没有则宣告加载失败 scene ISceneNode node 0 if mesh node smgr addOctreeSceneNode mesh getMesh 0 0 1 1024 if node node setPosition core vector3df 1300 144 1249 这几行程序表示从网格对象中建立一个场景节点并加入场景管理器中 网 格对象只有加入场景管理器才能被 irrlicht 绘制 否则只是保存在内存中 这里程序选择将场景节点按照八叉树分割管理 每个八叉树节点的多边形 数量不少于 1024 个 节点的被置于位置 1300 144 1249 中 smgr addCameraSceneNodeFPS device getCursorControl setVisible false 第一行告诉 irrlicht 的场景管理器 场景中需要一个 FPS 第一人称射击 类型的摄像机 第二行告诉 irrlicht 鼠标的光标没有必要显示出来 while device run if device isWindowActive driver beginScene true true video SColor 255 200 200 200 smgr drawAll driver endScene int fps driver getFPS if lastFPS fps core stringw str L Irrlicht Engine Quake 3 Map example str driver getName str FPS str fps device setWindowCaption str c str lastFPS fps e
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 1 Teenage Life 主题词汇专项练习(含答案) -2025-2026学年高中英语人教版(2019)必修第一册
- 2025年事业单位工勤技能-湖南-湖南中式烹调师一级(高级技师)历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北计算机信息处理员五级初级历年参考题库含答案解析
- 2025年事业单位工勤技能-湖北-湖北水利机械运行维护工四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北收银员三级(高级工)历年参考题库含答案解析
- 2025年环境监测智能化在城市空气质量预报中的应用与数据质量控制
- 2025年事业单位工勤技能-海南-海南管道工四级(中级工)历年参考题库含答案解析
- 2025年事业单位工勤技能-浙江-浙江计算机信息处理员五级初级历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江工程测量员五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河南-河南铸造工二级(技师)历年参考题库典型考点含答案解析
- 增值税法规与政策 (优惠)
- 早产儿的治疗及护理课件
- 养血生发胶囊药理作用研究-洞察分析
- 泡泡岛音乐与艺术节
- 2025年理论中心组学习计划
- 《上腔静脉综合征》课件
- 2024年采棉机采摘合同范本大全
- 游戏公司游戏测试合同
- 工程变更流程ECN
- 大学生新时代劳动教育教程全套教学课件
- JT-GQB-015-1998公路桥涵标准钢筋混凝土圆管涵洞
评论
0/150
提交评论