2024年2月24日发(作者:)

Irrlicht学习报告

1 学习平台及对象:

Irrlicht引擎:1.7.2

操作系统:Windows xp sp2

编译器:Visual stutio 2008

2 学习进程:

初步了解了irrlicht的结构、irrlicht的使用以及irrlicht的编译方式。

3 报告正文:

(1)irrlicht:

Irrlicht引擎是一个用C++书写的高性能的引擎。与市面上其他几个著名的开源引擎相比,irrlicht的主要优势在于上手简单以及高效实时性强,非常适合引擎初学者学习。这次学习我在vs2008编译器上进行。

(2)irrlicht的使用:

Irrlicht的使用需要通过编写C++代码来实现,与其说这里说是irrlicht的使用,不如说是如何把现成的irrlicht代码拿过来用- -...毕竟现在我还不会编写。以examples 1:Hello world 为例,在vs2008上:

1 新建工程,将examples1里面的拷贝进去(自然,在你真正编写自己的irrlicht代码时,这一步都是一样的)

2 工程需要include头文件的支持,在:工具->选项->项目和解决方案->vc++目录下面加入引擎include的地址(如下图)

3 工程需要lib的支持,首先需要在上述目录加入的路径:

其次,在:项目->属性->配置属性->连接器->输入->附加依赖项中填入,即代表工程引用了上述目录下的lib文件

4 将irrlicht引擎文件夹子文件bin下的放入vs工程所在文件夹内,和你所编译生成的.exe处于同一子文件夹。

5 这时候运行发现一闪而过,仔细检查代码发现其中有材质的载

入,我们刚才所创建的工程没有于是要从irrlicht引擎文件夹内把相应的材质放到工程文件内就ok了~(注意代码中的相对路径)

这虽然仅仅是一篇现成代码的载入过程,但是等到将来写好的irrlicht代码的编译过程其实和这个一样呢~

(3)Irrlicht引擎的编译方式:

既然老师布置的任务是移植到安卓上,那么仅仅会用会编写Irrlicht文件代码是远远不够的,我们将来所需的是编译irrlicht引擎本身。根据irrlicht的使用我们可以推断引擎的功能主要是包含在dll和lib两个文件中,现在虽然我还不会直接使用irrlicht的source来生成dll或者lib,但是可以用源代码来替代lib以及作用的地位,方法如下:

1 首先还是Hello World的。我们将其中载入lib的一段代码给去掉:

#ifdef _IRR_WINDOWS_

#pragma comment(lib, "")

#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")

#endif

当然你不想去掉也可以,只不过最后编译的时候会报错罢了,因为这次我们没有引用而是直接把source中的源代码当成lib来用,这一步我花了好久的时间才发现- -

2 用vs2008打开irrlicht源代码的工程文件,然后再把扔到一个你能想起来的地方

3 这时直接运行是编译不通的,当时我就卡在这里,因为各种报错缺乏d3dx9.h的缘故。最初以为是电脑没装dx9的缘故还屁颠屁颠

的下了个dx9发现于事无补(太天真了,缺少头文件你下dx9干什么...)最后查到了是微软的Directx sdk,下好之后安装它的头文件就大功告成

4 运行,如果这时没有问题了,那就代表编译通过,之后该怎么把它变成lib或者dll有待进一步研究

(4)Irrlicht的结构:

将工程文件载入vs后,source文件内原本无序的乱七八糟的文件就会非常有条理的展现在我们眼前:

在irrlicht文件夹内的dochtml里面有详细的类图,本来想贴上来充篇幅但是后来觉得还是别做这种无用功好。里面有详细的irrlicht的类与类之间的关系。不仅如此,irrlicht还实现了手柄操作(joyGetDevCapsA、joyGetPosEx以及joyGetNumDevs)、跨平台(xbox、osx、linux上都能应用),可以在dx8以及dx9及其以上应用,还可以在complierconfig.h中切换dx8和dx9模式。

任务总结:

大学期间最特殊的一个寒假,既最长,又有着考研完的彻底放松心态,也正是这种心态再加上本身的惰性导致了我在年前没有进行任何工作直到二月初才开始看有关毕设的内容,所以说做的内容既少又差望老师谅解- -。初上手irrlicht的时候跟当初刚开始学安卓的时候一样一头雾水,不同于刚入大学时候学c++以及编译原理课程上的老师把所有环境设置等基础都给你准备好,现在的任务从平台还是版本完完全全都是自己选的。选了较新的irrlicht1.7.2,当然也要付出代价,那就是用惯了的vs6不支持故又下了个vs2008接触新版本的编译器,好用的c++builder在此无用武之地了。当然毕竟现在irrlicht只是入门阶段所以没有遇到什么问题,不过随着今后的进程恐怕各种自己不能解决的甚至求助于旁人都无用的问题都会接踵而来,去年暑假做安卓的时候已经深有体会~只能一点一点网上查啊查,有的时候一天就卡在一两个小小问题上。下学期刚好准备要修图形学,可以借此机会跟毕设一起来补充自己有关图形方面的欠缺。