鬼火引擎-Quake3Map
来源:互联网 发布:淘宝店铺怎么改专业版 编辑:程序博客网 时间:2024/04/25 18:47
记录下关于学习鬼火引擎的知识
本来自己弄了这么久想写点东西,结果发现注释里写的差不多,好像也不是我想象的那么难,就附上一张自己理解的流程图,方便大家初学理解
#include <windows.h>#include <irrlicht.h>using namespace irr;using namespace core;using namespace scene;using namespace video;using namespace io;using namespace gui;#ifdef _IRR_WINDOWS_#pragma comment(lib, "Irrlicht.lib")#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")#endifint main(){ // 创建游戏设备 IrrlichtDevice *device =createDevice(video::EDT_DIRECT3D9, dimension2d<u32>(800, 600), 16,false, false, false, 0); if (!device) return -1; // 设置窗口标题 device->setWindowCaption(L"Game zy"); // 获取一个驱动对象 - 显卡驱动(抽象) IVideoDriver* driver = device->getVideoDriver(); // 获取一个场景管理器 - 导演 ISceneManager* smgr = device->getSceneManager(); // 获取GUI界面环境的指针(二维界面) IGUIEnvironment* guienv = device->getGUIEnvironment(); guienv->addStaticText(L"Hello World!", rect<s32>(10, 10, 260, 22), true); // 获取地图模型 device->getFileSystem()->addFileArchive("./media/map-20kdm2.pk3"); scene::IAnimatedMesh* meshmap = smgr->getMesh("20kdm2.bsp"); scene::ISceneNode* nodemap = 0; if (meshmap) nodemap = smgr->addOctreeSceneNode(meshmap->getMesh(0), 0, -1, 1024);// 八叉树的场景节点 if (nodemap) nodemap->setPosition(core::vector3df(-1300, -144, -1249)); // 加载人物模型(3D模型,帮助里介绍有兼容的模型类型) IAnimatedMesh* mesh = smgr->getMesh("./media/sydney.md2"); if (!mesh) { device->drop(); return 1; } // 将加载成功的模型加载到一个场景节点上 IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode(mesh); if (node) { node->setMaterialFlag(EMF_LIGHTING, false);// 材质的发光 node->setMD2Animation(scene::EMAT_STAND); node->setMaterialTexture(0, driver->getTexture("./media/sydney.bmp")); node->setPosition(vector3df(0, 0, 40)); node->setScale(vector3df(0.9));// 缩放 } // 第一人称视角(FPS)摄像机 smgr->addCameraSceneNodeFPS(); device->getCursorControl()->setVisible(false);// 隐藏光标 // 设置摄像机(世界坐标系为左手坐标) //smgr->addCameraSceneNode(0, vector3df(0, 30, -40), vector3df(0, 10, 0)); u32 frames = 0; // 循环一直等待游戏关闭 while (device->run()) { if (device->isWindowActive()) { driver->beginScene(true, true, SColor(255, 100, 101, 140)); smgr->drawAll(); // 绘制所有的场景节点,会自动处理不在渲染范围的物体 guienv->drawAll(); // 进行GUI重绘 // 类似EndPaint,告诉鬼火引擎,一帧绘制完毕,可以显示了(双缓存的感觉) driver->endScene(); if (++frames == 100) { core::stringw str = L"Irrlicht Engine ["; str += driver->getName(); str += L"] FPS: "; str += (s32)driver->getFPS(); device->setWindowCaption(str.c_str()); frames = 0; } } else device->yield(); } device->drop(); return 0;}
阅读全文
0 0
- 鬼火引擎-Quake3Map
- 【Irrlicht鬼火引擎】 认识鬼火引擎
- 【Irrlicht鬼火引擎】 认识鬼火引擎
- 认识鬼火引擎
- irrlicht 引擎例子 002 Quake3Map
- 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎
- 【Irrlicht鬼火引擎】 安装配置Irrlicht鬼火引擎
- vs2015与Irrlicht鬼火引擎
- 逐个版本分析鬼火引擎
- Irrlicht引擎手册示例(二):Quake3Map!
- 鬼火
- 鬼火
- 让Irrlicht鬼火引擎显示中文
- 鬼火引擎irrlicht一些功能资源收集
- 鬼火引擎入门相关知识熟悉
- 【Irrlicht鬼火引擎】掌握引擎使用流程,入门程序HelloWorld
- Irrlicht(鬼火引擎)中多设备的支持
- Qt 使用irrlicht(鬼火)3D引擎
- 如何观察JS代码的执行时长
- 自定义控件(四) 源码分析 layout 和 draw 流程
- GigE Vision,GenICam,以及相机的POE供电
- 四 希尔排序
- Java(9-1)输入与输出(一)
- 鬼火引擎-Quake3Map
- 【持久化框架】Mybatis简介与原理
- UDP
- 分枝限界法解带期限作业调度问题
- unity 动画机animator 播放完毕状态监听
- 视频手术刀 video bistoury(三)--Opengl 基石
- Ulipad安装失败解决办法
- Servlet--会话跟踪
- SQL——SQL简介