在QT中使用Irrlicht引擎的方法与步骤
2014-09-20 22:25
519 查看
Ø 相关库,插件安装部分
本篇文档介绍在Qt5.2.0下面使用lrrlicht引擎在Qt窗口中输出(开发环境:vs2012)1. 首先安装好Qt5.2.0,下载地址:
http://download.qt-project.org/archive/qt/5.2/5.2.0/qt-windows-opensource-5.2.0-msvc2012-x86-offline.exe
2. 接着安装qt中vs2012插件,下载地址:
http://download.qt-project.org/official_releases/vsaddin/qt-vs-addin-1.2.3-opensource.exe
3. Irrlicht鬼火引擎下载,我使用的是irrlicht1.81.zip,地址:
http://irrlicht.sourceforge.net/downloads/
Irrlicht下载后就可以直接使用,里面的lib,dll已经编译好了,若要自己编译则需要安装direct9x,当然如果不安装也可以,可以在Irrlicht编译开关文件中关闭direct9x支持,强制使用openGL。
注释以下高亮行即可:
(文件: irrlicht-1.8.1\include\IrrCompileConfig.h)
//! Only define _IRR_COMPILE_WITH_DIRECT3D_8_ if you have an appropriate DXSDK, e.g. Summer 2004 // #define _IRR_COMPILE_WITH_DIRECT3D_8_ // modify by TMLi,不使用direct9 2014.9 //#define _IRR_COMPILE_WITH_DIRECT3D_9_ #ifdef NO_IRR_COMPILE_WITH_DIRECT3D_8_ #undef _IRR_COMPILE_WITH_DIRECT3D_8_ #endif #ifdef NO_IRR_COMPILE_WITH_DIRECT3D_9_ #undef _IRR_COMPILE_WITH_DIRECT3D_9_ #endif
4. 上述安装完成后,我们需要在VS2012中对Qt做相关配置,在VS2012中菜单-QT5-Qtoptions,打开Qt设置对话框,将我们安装的Qt5路径设置进去即可,如下图所示。
Ø 环境搭建部分
创建Qt工程,解决方案名称:IrrlichtSolution,工程名称:IrrlichtHelloWorldqt会提示我们要使用的Qt部件,我们将OpenGL支持勾上
工程创建完毕后,我们来设置包含目录,库目录等。先看包含目录设置,如下图
库目录设置,如下图
链接器-输入-附加依赖项
完成上面步骤后,VC环境配置基本完成。
Ø 设计与编码部分
设计我们接下要写的例子是基于IrrLicht中的Example中的第一个例子:
01.HelloWorld (路径:irrlicht-1.8.1\examples\01.HelloWorld)
原例的运行效果如下:
我们要在其基础上之上做出改进,改进需求如下:
l 在指定Qt窗口中显示Irrlicht引擎的输出画面
l 可以手动开启或关闭Irrlicht引擎
l 可以手动调节场景摄像机的位置
在正式看代码之前,我们先看下最后的效果,如下图所示,黑色屏幕即为输出Irrlicht的画面的窗口。
指定窗口输出irrlicht画面的代码片断:
irr::SIrrlichtCreationParameters param; param.WindowId = (void*)m_winID; IrrlichtDevice *device = createDeviceEx(param);
开启,关闭irrlicht引擎,我们只需要启动或关闭irrlicht渲染线程即可办到,而控制摄像机的位置则更简单,我们只需要在创建场景摄像机时保存摄像机句柄和当前位置,然后将改变的位置传递给摄像机句柄即可。
m_camer_pos = vector3df(0,30,-40); m_camer = smgr->addCameraSceneNode(0, m_camer_pos, vector3df(0,5,0));
下面为核心的irrlicht渲染线程,QIrrLichtTrhead继承至QThread。
void QIrrLichtThread::run()
{
irr::SIrrlichtCreationParameters param;
param.WindowId = (void*)m_winID;
IrrlichtDevice *device = createDeviceEx(param);
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!",
irr::core::rect<s32>(10,10,260,22), true);
IAnimatedMesh* mesh = smgr->getMesh("sydney.md2");
if (!mesh)
{
device->drop();
return ;
}
IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );
if (node)
{
node->setMaterialFlag(EMF_LIGHTING, false);
node->setMD2Animation(scene::EMAT_STAND);
node->setMaterialTexture( 0, driver->getTexture("sydney.bmp") );
}
m_camer_pos = vector3df(0,30,-40); m_camer = smgr->addCameraSceneNode(0, m_camer_pos, vector3df(0,5,0));
while(device->run() && m_bquit == false)
{
driver->beginScene(true, true, SColor(255,100,101,140));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
}
device->drop();
}
至此,核心代码已经全部贴出。若需要完整工程,可从此处下载
相关文章推荐
- Qt XML 使用QxmlStreamReader的使用的步骤和方法
- 应用程序中的所有线程都可以访问方法中的公用字段。要同步对公用字段的访问,您可以使用属性替代字段,并使用 ReaderWriterLock 对象控制访问。为此,请按照下列步骤操作:
- Qt+VC环境搭建以及使用方法
- QT:直接使用ui文件生成h文件的方法
- Qt实现areo毛玻璃效果的类,以及使用方法:
- Irrlicht引擎使用2之中文显示
- QT中定时器的使用方法
- 示波器的使用方法和步骤(正文)
- 使用Qt编写服务器端程序(包括Http传输服务器端)的方法
- Qt4中ui文件的使用方法
- Qt ② QStringList的简单使用方法
- [原]Qt4.5中Plugins使用方法
- php smarty模版引擎中变量操作符及使用方法
- php中smarty模版引擎中常用的20个变量操作符及使用方法!
- Qt中使用QSqlDatabase::removeDatabase()的正确方法
- tomcat远程调试方法以及使用步骤(IDE是Jbuilder)
- jaxp使用初级入门(只需要两个步骤,覆盖五个方法)
- DOXYGEN注释宏使用步骤及常见问题解决方法
- 使用VARIANT传递数组的方法及步骤
- QtWebkit 插件使用方法