Irrlicht Engine 相关信息
欢迎您从下载最新版的Irrlicht引擎。
欢迎您从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
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支持)
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:
一部分朋友协助进行了部分引擎的编写和修改工作,请在这里查看完整的作者名表。
http://irrlicht.sourceforge.net/author.html
为了使您在项目或游戏中使用Irr引擎更加方便简单,我们提供了一些外部工具。这些工具和库是完全独立于Irr引擎的,但是这些工具是完全针对Irr引擎兼容的。
1:irrKlang 一个2D和3D音效引擎
irrKlang引擎是一个免费的2D和3D音效引擎库,它提供WAV,MP3,OGG,MOD,XM,IT,S等一些音频格式的播放支持。它是由C++编写的,下面是它的一些特性:
l 它能够与Irr引擎的完美结合,因为它使用了一些Irr简单的API,但是又可以完全独立于Irr引擎使用。
l 跨平台。
l 支持2D和3D的流音频播放。
l 支持回声,失真,多普勒等多种2D3D音频特效。
l 支持多种音频格式:wav, mp3, ogg, mod, xm, it, s3m ….等等。
l 高级资源管理和资源探测。
l 提供了具有可扩展型的音频解码器和plugin系统。
l 免费。
更详细的信息,您可以从这里获得http://www.ambiera.com/irrklang
2:irrEdit 一个3D地图编辑器
irrEdit是一个免费的3D地图编辑器。它能够进行场景曲线编辑,世界场景编辑,粒子系统设计,Mesh查看等功能。它的文件保存格式为.irr格式,Irr引擎能够支持。它的特征包括:
l 它包括一个高质量的地图产生器
l 它包括一个粒子系统编辑器
l 编辑器中还包括有一个自由完善的脚本系统
l 它包括动画器和数据编辑器
l 免费
因为它是使用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
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引擎有什么优势?
l 容易使用。Irr引擎把所有常规的事情和绚丽的特效都已经做好了,您不需要花几天的时间去学习文档。例如:启动引擎,读取并显示一个Quake3的地图仅需要调用引擎6个函数,代码行数不超过10行,有兴趣的话,您可以查看sdk中的例子。
l 灵活性强。虽然引擎很方便使用,但是你能够很容易的修改它。
l 极其稳定。大部分实时程序在用户进行意外操作时会严重当机。但是Irr引擎不同,它会打印出一个警告信息,而应用程序大部分情况会继续运行。
l 快如闪电。(笃志注:真强的形容- -) 因为3D引擎的常见问题在于速度,而影响速度的主要原因在于大量的内置导入解析器,而Irr引擎可以直接的进行文件导入而没有使用任何转换器,节省了大量的编译时间。它支持下列格式(.3ds, .md2, .obj, .pk3, .ms3d, .bsp, .x, .bmp, .tga, .jpg, .psd, .pcx等等)
l 平台独立性。Irr引擎可以在众多平台上使用。
l 独立API。因为有很多种设备类型,Irr引擎支持多种API,当前来说是支持OpenGL,D3D8和D3D9设备,一个空设备和两种软件模拟设备。甚至,在渲染的时候也允许进行设备类型的更换。
l 不依赖其他库。Irr引擎sdk不需要其他库的支持。例如,即使用户系统中没有DirectX,引擎也能顺利运行。
l 完善的文档。(笃志注:这条…有点名不其实了吧,Demo还不少,但文档却难得一见。)大量的例子和Demo,并且提供了一些你在3D程序中常用的工具,于是你无需新建项目来做这些工作。它包括(GUI系统工具,Font生成工具..等)
l 开源。这个引擎是完全免费并且开源的。你可以随意的修改它,但是你必须标注出你的修改部分。这个引擎是基于Zlib的版权声明的,既非GPL也非LGPL。
6:为什么这款引擎这么快?
很多朋友给我写信说:他们使用了一些3D引擎,而Irr引擎是最快的,为什么这款引擎会这么快呢?实话说,我也不知道明确的原因,但是有以下这些可能:
l Irr引擎没有象其他大部分引擎那样使用保守的拣选运算,而新式的数学拣选更加适合现代的3D硬件。它默认的是使用16位纹理图,引擎在解析和显示这些图片时候会比其他引擎快些。
l Irr引擎没有使用其他比较慢的库,大部分事情都在引擎核心中实现的。
7:这个引擎能够渲染多少个面?
无限。OK,是接近无限。真正的限制在你的硬件。所以,根据你的需要尽管在程序中加入大量的模型面吧,只要你的游戏不卡。有些朋友问我,为什么教学例子中定义最大面数为10000,原因是我没有必要去做一个巨大的Quake3场景,弄的SDK下载包大的很。如果你想知道引擎能够支持渲染多少个面,那么你换个场景素材,自己看吧。
8:我的代码里出了些问题,能帮我解决下吗?我在论坛中没有获得解答。
抱歉,我没有时间为你的应用程序Debug。很多朋友把他们的代码给我让我来解决,但是我没有时间去为每一个来信的朋友解决问题。大部分情况下都是他们自己的C++代码原因而非引擎的错误。请打开你的Debugger用它去寻找你的程序中的错误。如果你不会使用Debugger,那么请在每一行代码前执行一句命令行打印代码,你就会找到是哪一行导致当机了。
而你在论坛中获得不了帮助的大部分原因是你没有详细的描述你的问题情况。仅仅帖了100行代码然后写句“我这里有错,请帮我解决”这样是不行的。嘿,你是个程序员,应该最少60%时间用在程序Debug上。这个是我Debug所花的时间,其他程序员或多或少,但我想都差不多。当你的程序出现错误后,请尽量自己去解决,你将会比问别人找到bug而获益更多。
9:“Irrlicht”是什么意思?
Irrlicht是德语中的一种会发光,会飞行的神话动物。它通常生活在沼泽旁。我想,正确的英语翻译应该是”will-o-the-wisp”。同样,Irrlicht也可以分割成两个德语单词,“irr”意思是“mad(疯狂的)”,”Licht”意思是”light(灯光)”。Irr引擎发源于奥地利(德国南部),尽管非德语用户可能不知道它的发音,我却认为“Irrlicht”是个好名字。
因为很多用户问我这个词如何发音,我专门上传了一个声音文件,你可以听到一个女孩子说”Irrlicht Engine”的声音,请点http://irrlicht.sourceforge.net/download/irrlichtengine.wav
10:我能够加入Irr引擎开发团队吗?
基本上不行。抱歉,我喜欢小型的Irr引擎开发团队,因为这样可以保证每个计划简单的得到执行。
但是,这也有例外。如果你对Irr引擎提供了一个 强大/有用/突破性 的增强功能,而且愿意加入团队,我们也会欢迎。例如:你能够使Irr引擎在Mac平台上顺利运行(现在已经可以了,但仅仅是一个Demo可以)。部分朋友提供了Irr引擎一小部分的修改,但是他们没有通过版本控制器来获得引擎的同步,我们也不能让他加入。
不过现在又改了:如果你创建了一个模块并且按照Irr引擎编写规范(下文有),并且愿意长期维护并分享它,你可以加入本小组,你只需要将你的代码发给niko就可以了。
请注意,每月总有4-5个朋友希望加入Irr引擎开发团队,我实在难以选择,因为我们总希望团队尽可能的保持简单而工作快速起来。
11:代码规范是什么?
如果你制作了一个Irr引擎的补丁,而且希望它加入到引擎中,请遵循以下原则:
l 除非特别特别特别必要,尽可能的不要依靠其他库
别用STL,请使用Irr引擎中内置的容器类。
别用平台相关函数,必要的话请使用os::命名空间内的函数。
l 请谨记,Irr引擎是可以运行于其他平台和编译器下的。
请不要使用特殊的编译器扩展,尽量使用标准C++
请使用Irr引擎中的类型定义,例如f32, u32
l 请尽量不要修改现有的Irr接口。除非极其必要而且正确。另外,建议您应当下载最新版本的Irr引擎。若你依旧有这种修改需要,最好和niko先商谈一下。
l 尽量使用现有的Irr代码风格。
1:接口以I开头,实现以C开头,仅保存数据的结构体以S开头。
2:函数尽量以小写字母开头,变量尽量以大写字母开头。
3:接口的公共函数,其参数应当给默认值。
4:增加一个函数或修改一个函数,应当按照doxygen规范给予注释。如果你对Irr引擎进行了大量的修改,请在changes.txt中说明。
5:使用C++风格的编码习惯,别使用Java代码习惯,例如
For(foo)
{
//TODO:
}
For(foo){
// TODO:
}
前一种就比后一种好。
6:上面的都是比较重要的规则,但是还有一些其他的小规则。例如,尽量使用命名空间,换行和tab键,使你的代码看起来好看一些。
l 多检查代码可能出错的地方,预防当机。例如,对一些参数进行判断,检查指针是否为空。另外,发生错误时,输出一个错误log,用其他方式使程序继续运行下去。这些工作除非在软件模拟格式下都是必须做好的。
以上就是基本的代码规范了。
12:没有CVS吗?
Irrlicht是由一个subVersion服务器做主机的,所有CVS服务器的数据都是老版本的。如果你依然希望获得最新版本的CVS,请通过:pserver:anonymous@cvs.sourceforge.net:/cvsroot/irrlicht ,
模块名是”Irrlicht”,更详细的配置请看这里http://sourceforge.net/cvs/?group_id=74339
13:我如何链接SubVersion服务器?
你能够通过https://irrlicht.svn.sourceforge.net/svnroot/irrlicht/trunk 进行访问。
14:下一个版本引擎将有什么功能?
请查看开发主页http://irrlicht.sourceforge.net/development.html 和我的博客http://www.irrlicht3d.org 。我会在上面时时更新最新的开发新闻。你或许能在其中发现下一版本引擎的的预告说明。
15:下一个版本Irr引擎什么时候发布?
等它被完成的时候。这个引擎仅仅是一个开源引擎,我从中没有获得一分钱,所以我不能做出最终期限。一般1-2个月我会发布一个新的小版本更动,可能是从0.4到0.5。平时我会提前1-2星期发布公告并贴出一些截屏和新的特征说明。所以请不要再给我来信询问这个问题,实际上,大部分时候我自己也不知道这个问题的答案。