一、 ORGE(http://www.ogre3d.org/)
1 - 什么是Ogre
Ogre是一款开源的图形渲染引擎,它的全名叫(Object-oriented Graphics Rendering Engine),它是由一个核心小组开发并维护,由于它是一款开源引擎,所以它也像Linux一样,被各种不同的团体和组织改造和扩充,并使它能够适应不同的应用领域和拥有更强大的功能。
2 - 利用Ogre引擎进行开发,我们需要什么硬件和工具
Ogre可以在各种不同的3D图形显卡上运行,但在表现性能是肯定不一样的。
NVidia: Geforce2 or higher required, Geforce 4(non-mx) or higher recommended
ATI: Radeon 7500 or higher required, Radeon 9600 or higher recommended
关于工具,我们需要支持的C++编译器,在这里,我们只有Visual C++ 6/7/7.1 和 GCC 支持它, Bloodshed 和 Borland 的编译器,因为他们不是官方的编译器,所以在这里 Ogre 并不支持。
3 - 我需要会编程才能使用Ogre吗?
对,你的确需要会编程,Ogre并不是一款像游戏工厂(Game Factory)那样的游戏外壳或者脚本语言,你需要有更多的知识去了解应该如何使用它,而且它的功能比那些游戏外壳或脚本语言更加的强大。你需要对C++编程有所了解,特别是面向对象的编程方式(object-oriented programming),Ogre并不适合那些刚刚学习编程的使用者,换句话说:你不可以通过学习Ogre引擎来学习C++程序设计。
4 - Ogre可以制作各种类型的游戏吗?
对,它不像其他的3D引擎,Ogre并不倾向于某一种类型的游戏。由于它的设计,它可以用于从飞行模拟器到第一人称射击游戏到2.5D游戏等等,总而言之,如果那款游戏要使用3D, Ogre就适合开发它。
5 - Ogre可以制作MMORPG(大型在线网络RPG游戏)吗?
理论上是可以的,但是MMORPG需要大量的时间,精力和经费来开发和维护。
6 - Ogre 是游戏引擎吗?
不,Ogre缺少游戏引擎的一些部分,Ogre只是一款图形引擎,并且只是一个图形引擎,但是,它可以很方便地与其他的开发库结合起来来创造一个游戏引擎,创建一个游戏引擎也许你还需要:
声音
网络
输入
碰撞处理
7 - Ogre 能生成像MAYA生成的那样的图形吗?
Ogre是一款实时图形渲染引擎,那些在cgtalk或者其他网站上的图象是离线渲染的,经常是使用ray tracing(光线追踪)技术。这两种技术是截然不同的。 一种是可以把图象渲染的像照片一样的真实,但是可能渲染一张图象需要几个小时甚至几天的时间。但是实时渲染需要保持每秒30帧的速度,这样就说渲染一张图象的时间需要在1/30秒内。但是随着3D图形加速卡的快速发展,这两总技术的界限也越来越小,如果你想知道Ogre可以渲染什么样的图象,你可以去Nvidia 和 ATi网站去看看。
二、 CEGUI(http://www.cegui.org.uk)
CEGUI是一个自由免费的GUI库,基于LGPL协议,使用C++实现,完全面向对象设计。CEGUI开发者的 目的是希望能够让游戏开发人员从繁琐的GUI实现细节中抽身出来,以便有更多的开发时间可以放在游戏性上。
CEGUI的渲染需要3D图形API的支持,如OpenGL或Direct3D。另外,使用更高级的图形库也是可以的,像是OGRE、Irrlicht和RenderWare,关键需求可以简化为二点:
1. 纹理(Texture)的支持
2. 直接写屏(RHW的顶点格式、正交投影、或者使用shader实现)
CEGUI同步提供了官方界面编辑器LayoutEditor,以方便UI的制作。下载地址:http://www.2dgame- tutorial.com/downloads/CELayoutEditorSetup_0.4.1.exe
作为界面编辑器,它需要系统级界面以提供 编辑器操作,在此之前的0.3.0版是基于MFC实现的;而在0.4.1版本中,改为基于wxWidgets(跨平台的本地UI框架,这里的UI指 Window操作系统底层,如:Windows、Unix和Mac,详见http://www.wxwidgets.org)实现。
OGRE作为目前最活跃的开源3D引擎,许多公司开始使用它进行游戏开发,原因也是其功能非常得全面和强大。在最初,OGRE曾经实现过一版UI,但是最后却放弃自己的实现而选择了CEGUI。
三、 OSG (http://www.osgchina.org/projects/osgcn/wiki.php)
OpenSceneGraph是一个开放源码,跨平台的图形开发包,它为诸如飞行器仿真,游戏,虚拟现实,科学计算可视化这样的高性能图形应用程序开发而设计。它基于场景图的概念,它提供一个在OpenGL之上的面向对象的框架,从而能把开发者从实现和优化底层图形的调用中解脱出来,并且它为图形应用程序的快速开发提供很多附加的实用工具。
· 性能
支持视图投影剔除(view frustum culling),隐藏面剔除(occlusion culling),小特性剔除(small feature culling),细节层次节点(LOD),状态排序(state sorting),顶点数组,顶点缓冲对象(vertex buffer objects),OpenGL着色语言和显示列表(display lists),以上所列都是场景图内核的一部分。它们共同使OpenSceneGraph成为一个高性能的图形库变为可能,OpenSceneGraph也支持绘制进程(drawing process)的定制,比如场景图的连续细节层次(CLOD)的网格(参见虚拟地形项目和Delta3D)。
· 快速开发
场景图的内核封装了包括最新扩展的大部分OpenGL功能,提供诸如剔除和排序的渲染优化功能,同样提供能快速开发高性能图形应用程序的一整套补充库。应用程序开发者可以更关心实质性内容和如何操控这些它们,而不再是底层的代码
??? 通过学习已有的场景图,比如:Performer和Open Inventor,把它们同像设计模式这样现代软件工程理念联合起来,加上早期开发周期中的大量反馈信息,设计一个清晰的可扩展的库已经成为可能。用户可以很简单的适应OpenSceneGraph并且把它集成到自己的应用程序中
· 数据装载
为了读入和写出数据库,有一个数据库的支持库(osgDB)增加了通过后缀名动态插件机制,从而支持大量数据格式,目前的发布版本有55种单独的插件支持3D数据和图像格式的装载。支持的3D数据格式包括COLLADA, LightWave (.lwo),Alias Wavefront (.obj),OpenFlight (.flt), 多线程页面调度支持的TerraPage (.txp),Carbon Graphics GEO (.geo), 3D Studio MAX (.3ds), Peformer (.pfb),AutoCAd (.dxf), Quake Character Models (.md2). Direct X (.x), and Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl), Designer Workshop (.dw) ,AC3D (.ac) 和自带的.osg ASCII 文本格式。支持的图像格式包括.rgb, .gif,.jpg, .png, .tiff, .pic, .bmp, .dds (包含压缩的一系列Mip贴图影像),.tga and quicktime (在OSX环境下),全范围的高质量、抗锯齿字体也能通过freetype插件支持,基于字体的图像也可以通过.txf插件支持。
用户也可以通过与我们同行的一个项目(VirtualPlanetBuilder)生成大规模地形空间数据(multi GB),使用OpenSceneGraph的自带数据分页调度支持来查看这些数据。
· 节点工具箱
这个场景图同样有一套节点工具集,它们是可以在你的应用程序中编译或者在运行时装载的独立库,它们增加支持粒子系统(osgParticle),高质量抗锯齿文本(osgText),特效框架结构(osgFX),阴影框架结构(osgShadow),交互控制(osgManipulator),与虚拟仿真相关的效果(osgSim)。
· 可移植性
场景图的内核已经被设计成尽量少的依赖具体的平台,很少的部分超出了标准C++程序和OpenGL。这就使得这个场景图可以快速移植到大部分系统中—最开始在IRIX开发,然后移植到Linux,接着到Windows,再后来就是FreeBSD, Mac OSX,Solaris,HP-UX, AIX 甚至是PlayStation2!
完全独立与窗口操作系统的场景图内核库使得用户在它上面可以增加他们自己的指定窗口库和应用程序,在发布版本中osgViewer库提供自带窗口支持,可支持Windows (Win32), Unices (X11) 和 OSX (Carbon)。osgViewer库也可以轻松的和你的窗口开发包集成起来,作为OpenSceneGraph-2.0发布版本的一部分,有例子演示了如何在Qt, GLUT, FLTK, SDL, WxWidget, Cocoa and MFC中的使用。场景图内核的可扩展性使得它不仅仅可运行在便携式设备,甚至高端的多核、多GPU的系统和集群上。这可能是因为场景图内核为OpenGL的显示列表和纹理对象支持多重图形渲染环境(multiple graphics contexts),剔除和绘制的遍历过程被设计成隐藏渲染数据为局部变量,这样可以以几乎只读的方式使用场景图内核。这样就允许多对剔除—绘制过程运行在多个CPU上,CUP也是绑定在多个图形子系统之上。对多图形设备渲染环境和多线程的支持可以在osgViewer中方便使用,发布版本中所有的例子都可以以多线程和多GPU的方式运行。作为社区项目,OpenSceneGraph支持多种语言,比如Java,Lua和Python。
四、 QT
Qt 是一个跨平台的 C++ 图形用户界面库,由挪威 TrollTech 公司出品,目前包括Qt, 基于 Framebuffer 的 Qt Embedded,快速开发工具 Qt Designer,国际化工具 Qt Linguist 等部分 Qt 支持所有 Unix 系统,当然也包括 Linux,还支持 WinNT/Win2k,Win95/98 平台。
基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但是 Qt 具有下列优点:
Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。
Qt 包括多达 250 个以上的 C++ 类,还替供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。