2009 年 6 月 11 日星期四 Irrlicht Engine 中文学习指南 ISClub
Irrlicht Engine | 未来公司
1
Irrlicht Engine 中文学习指南
收集整理:By ISclub 翻译:FK_Duzhi (感谢他)
日期:2009 年 6 月 11 日星期四
前言:
为了学习 3D 网络游戏开发,尝试过几种经典免费开源的引擎:TV3D,Irrlicht(简称 Irr),Ogre
等等;TV3D 目前最新的版本 V6.5 已经可以很好的支持 VB6,VC++,Delphi,.NET 等语言,特点
是新手学习速度快,门槛低;缺陷是基于 ActiveX 控件,需要在运行前注册 RunTime DLL。
Irrlicht 采用 C++封装的 3D 引擎,是一款轻量级的 3D 引擎,引擎本身精简强悍,功能也齐
全,并且有自己专用的场景编辑器;但扩充功能不易,对于新手来说,也是难得的入门快,
学习快的引擎。
Ogre 是一款开源的 3D 渲染引擎,它非常强大,并且支持插件等形式来完成新的功能,这点
优于 Irrlicht,但入门不易。
本文翻译,以及来源载录信息来自:FK_Duzhi 大侠。
2009 年 6 月 11 日星期四 Irrlicht Engine 中文学习指南 ISClub
Irrlicht Engine | 未来公司
2
欢迎您从 http://irrlicht.sourceforge.net 下载最新版的 Irrlicht 引擎
1:SDK 目录结构总述
当您下载 Irr 引擎 SDK 解压缩之后,你会看到以下文件夹:
\bin 完全编译好的 Irrlicht,DLL 以及一些编译好的 Demo,你可以通过这些例子来获取 Irr 的
运行状态。(Windows Only)
\doc Irr 引擎的一些文档。
\examples 使用 C++编写的例子,告诉用户如何使用 Irr 引擎。
\examples.net 使用.NET 语言编写的例子,告诉用户如何使用 Irr 引擎。
\exporters 一些 Irr 引擎用到的辅助库和工具。
(注:部分版本没有此文件夹,该文件夹内容在 source 中,包括 Jpeglib,libpng,MacOSX,zlib 等)
\include 引擎包含的头文件。
\lib 当你使用 Irr 引擎时需要链接的库文件。
\media Demo 程序需要的一些图形图象和声音素材。
\source Irr 引擎的源代码,必要的话,你可以对其进行编译和 Debug 以获得新的 lib。
\tools 引擎的一些有用的工具。(包含源文件)
2:如何启用引擎
在 Windows 环境下启动引擎的话,你需要去\bin\Win32-VisualStudio 目录下运行程序。或者
你也可以运行一个叫 Demo.exe 的程序,它会显示一些 Irr 引擎有意思的功能。
在开始我们自己的程序编写之前,你最好看看\examples 目录下的例子,那里也有一个.html
格式的文件对例子进行说明,以方便你的理解。(编者注:您也可以到这里获取一些例子相
关的帮助)
在 Linix 环境下,Irr 引擎是一个静态库。你可以使用 source/Irrlicht 中的 Makefile 文件来生成
一个编译好的引擎。之后,你应当可以生成/examples 中的例子程序了吧。之后你可以立刻
运行这些例子了。
3:SDK 编译需求
你可以使用下列编译器之一来运行 Irr 应用程序。不过,其他编译器可能也能完美运行,但
是我没有做过测试。
l gcc3.3
l gcc 3.4
l gcc 4.0.3
l Visual Studio 6.0
l Visual Studio.NET 2003 (7.1)
l Visual Studio 2005 (8.0)
l Code::Blocks 1.0 + gcc 或 Visio Studio Toolkit
l DevC++ 5.0 + gcc
如果你不想使用编译好的引擎库,你可以自行使用源代码进行编译,你需要以下支持:
l Windows 环境下:
Windows 平台 SDK(一般 IDE 里已经包含)
DirectX 9 SDK(可选,进行 D3D9 支持)
2009 年 6 月 11 日星期四 Irrlicht Engine 中文学习指南 ISClub
Irrlicht Engine | 未来公司
3
DirectX 8 SDK(可选,进行 D3D8 支持)
l Linux 环境下:
Xserver 以及其包含文件
OpenGL 支持库(可选,包括 libGL 和 libGLU)
GLX + XF86 视频扩展库 (可选)
4:版本注意
1: 您可以在 changes.txt 中查看引擎版本的更改信息。
2: 请注意,那些材质纹理 3D 模型等素材的版权依旧属于其原作者,而不受本引擎版权声
明影响。
5:声明
这个声明是基于 Zlib/libpng 的。假若您在项目中使用了 Irr 引擎,您有权不提及它,但是还
是希望您能来封感谢信。(笃志注:外国人这点就是好)
请注意,Irr 引擎是基于 JPEG 库,Zlib,libpng 这些库之上的,那就意味着,如果您在自己项
目中使用了 Irr 引擎,您必须在项目文件中提到你使用了这些库,并且声明感谢。当然,若
您愿意声明感谢 Irr 引擎的话自然更好。更详细的声明信息建议您看 jpeglib 和 zlib 中的
ReadMe 文件。
Irr 引擎许可声明
禁止使用本引擎进行任何不法行为,违反者后果自负。
在基于下列三项要求前提下,本引擎允许任何人进行随意使用,包括制作商业软件,同样也
允许你随意修改源代码。
1:若您在项目中使用了本引擎,您可以在项目说明中声明感谢,不过,您也可以不做感谢
声明,但是,本引擎文件来源说明绝对不允许修改删除。
2:若您进行源代码修改,请务必做出明显标注。
3:本份声明不允许被修改或删除。
6:联系方式
如果你有问题或者建议,欢迎来访 Irr 官方网页:http://irrlicht.sourceforge.net
在官方网页您将会看到 Irr 主题的论坛,补丁,例子和其他一些帮助。
如果您想加入引擎开发组,请发一封邮件至 Nikolaus Gebhardt: irrlicht@users.sourceforge.net
一部分朋友协助进行了部分引擎的编写和修改工作,请在这里查看完整的作者名表。
http://irrlicht.sourceforge.net/author.html
2009 年 6 月 11 日星期四 Irrlicht Engine 中文学习指南 ISClub
Irrlicht Engine | 未来公司
4
7:相关工具
为了使您在项目或游戏中使用 Irr 引擎更加方便简单,我们提供了一些外部工具。这些工具
和库是完全独立于 Irr 引擎的,但是这些工具是完全针对 Irr 引擎兼容的
。
1:irrKlang 一个 2D 和 3D 音效引擎
irrKlang 引擎是一个免费的 2D 和 3D 音效引擎库,它提供 WAV,MP3,OGG,MOD,XM,IT,
S3M 等一些音频格式的播放支持。它是由 C++编写的,下面是它的一些特性:
它能够与 Irr 引擎的完美结合,因为它使用了一些 Irr 简单的 API,
但是又可以完全独立于 Irr 引擎使用。
跨平台。
支持 2D 和 3D 的流音频播放。
支持回声,失真,多普勒等多种 2D3D 音频特效。
支持多种音频格式:wav, mp3, ogg, mod, xm, it, s3m „等等。
高级资源管理和资源探测。
提供了具有可扩展型的音频解码器和 plugin 系统。
免费。
更详细的信息,您可以从这里获得 http://www.ambiera.com/irrklang
2:irrEdit 一个 3D 地图编辑器
irrEdit 是一个免费的 3D 地图编辑器。它能够进行场景曲线编辑,世界场景编辑,粒子系统
设计,Mesh 查看等功能。它的文件保存格式为.irr 格式,Irr 引擎能够支持。它的特征包括:
它包括一个高质量的地图产生器
它包括一个粒子系统编辑器
编辑器中还包括有一个自由完善的脚本系统
它包括动画器和数据编辑器
免费
因为它是使用 Irr 引擎编写的,所以它能够读取所有 Irr 引擎所支持的格式。
另外,它能够将一切文件保存输出为 COLLADA 文件格式。
更详细的信息,您可以从这里获得 http://www.ambiera.com/irredit
3:irrXML 一个 C++编写的最快的开源 xml 解析器
irrXML 是一个 C++编写的最快的开源 xml 解析器。它已经嵌入在 Irr 引擎中了,例如我们在
读取一个.irr 或 COLLADA 格式文件时就是使用它。它非常快,又是轻量级代码,而且不浪费
一点内存,是做游戏时很好的一个库。
如果你的项目不使用 Irr 引擎,你又需要一个快速的 XML 解析器,建议你使用这个库。它的
使用声明和 zlib 一样。更详细的信息,你可以从这里获得 http://www.ambiera.com/irrxml
2009 年 6 月 11 日星期四 Irrlicht Engine 中文学习指南 ISClub
Irrlicht Engine | 未来公司
5
8:一些常见问题和解答
1:Irrlicht 引擎是什么?
Irr 引擎是一个高性能,跨平台,开源的 3D 引擎。它能够帮助你进行实时 3D 程序的开发。
它的主要目标是:方便使用,运行速度快,可扩展,线程安全。
这个引擎是一个非常灵活的引擎,可以使用它编写许多不同的应用程序。例如:复杂的 3D
仿真应用程序,第一和第三人称室内或室外射击游戏,策略游戏,2D 游戏等等。
2:我能够在不开源的商业程序中使用这个引擎吗?
你当然可以。Irr 引擎是免费的,而且完全自由的。您可以随意的编辑修改它,但是你必须
标注出你的修改部分。这个引擎是基于 Zlib 的版权声明的,既非 GPL 也非 LGPL。更详细的
情况,您可以查看内部的声明。
3:我可以用 Irr 引擎做一款游戏吗?
当然可以,而且这会很简单。
但是,请注意:Irr 不是一款游戏引擎,它仅仅进行了图象处理。做为一款游戏,你需要更
多的部分,例如声音输出,网络和物理系统,也需要一些游戏相关的编辑器。您当然可以选
择自己制作这些编辑器,但是 Irr 引擎已经有一些现成的编辑器和库可以提供给您使用,例
如 irrKlang, irrEdit。更详细的情况,您可以查看相关的说明。
4:我可以为引擎做一些贡献吗?
如果你编写了自己的场景节点,图片和 Mesh 读取器,或者对引擎做出了更多的扩展,请在
http://irrlicht.sourceforge.net/phpBB2/index.php 给我们来封论坛短信,我将会查阅您的代码,
并会考虑将它发布到 Irr 主页,甚至加入到引擎 sdk 之中。
在例子 http://irrlicht.sourceforge.net/tutorials.html 这页将会告诉你如何对引擎进行
扩展(笃志注:并未发现相关资料啊- -难道所谓的扩展就是写几个 Demo?)如果你想加入我们
的开发组,请先尝试习惯我们的代码规范。(笃志注:- -并未给直接的联系方式)
5:现在有很多其他的 3D 引擎可以使用,请问 Irr 引擎相对于其他 3D 引擎有什么优势?
容易使用。Irr 引擎把所有常规的事情和绚丽的特效都已经做好了,您不需要花几天的时间
去学习文档。例如:启动引擎,读取并显示一个 Quake3 的地图仅需要调用引擎 6 个函数,
代码行数不超过 10 行,有兴趣的话,您可以查看 sdk 中的例子。
灵活性强。虽然引擎很方便使用,但是你能够很容易的修改它。
极其稳定。大部分实时程序在用户进行意外操作时会严重当机。但是 Irr 引擎不同,它会打
印出一个警告信息,而应用程序大部分情况会继续运行。
快如闪电。因为 3D 引擎的常见问题在于速度,而影响速度的主要原因在于大量的内置导入
解析器,而 Irr 引擎可以直接的进行文件导入而没有使用任何转换器,节省了大量的编译时
间。它支持下列格式(.3ds, .md2, .obj, .pk3, .ms3d, .bsp, .x, .bmp, .tga, .jpg, .psd, .pcx 等等)
平台独立性。Irr 引擎可以在众多平台上使用。