易于使用的跨平台3D引擎进行C ++游戏开发?[关闭]


73

我想尝试编写3D游戏。但是,我不想从如此低的水平开始绘制单个三角形并编写自己的3D对象加载器等。我听说过IrrlichtCrystal Space 3DCafu之类的东西,但是我对它们没有任何经验。我正在从具有这些或其他引擎经验丰富的人那里寻求建议,这些引擎在其上写得很好,并且易于上手,而无需学习大量的3D数学理论以及GPU在内部的工作方式。


16
虽然可能已经关闭,但是这个问题对我很有帮助。
Caleb Jares 2013年

4
同上,非常好的线程,不知道为什么stackexchange不喜欢这种问题。
Steveh,2015年

2
他们喜欢结束我想提出的问题
Frank Cranston


Answers:


48

我的意见(仅适用于开源3D引擎):

  • 违法
    • 轻型3D引擎
    • 干净的C ++,没有依赖关系,也没有STL。
    • 没有很好的文档记录,但是有很好的教程。
    • 很小,因此您可以轻松自定义它。
    • 官方SDK中没有OpenGL 3.X驱动程序,Direct X 10.X或11.X。
    • 非常适合移动开发;
    • 良好的社区
    • 可用的扩展很少
  • Ogre3D
    • 大3D引擎
    • 它使用现代的C ++,例如STL,异常和RTTI
    • 好的文档(有出版的书籍)。
    • 许多渲染器(OpenGL,DirectX和OpenGL ES ...)。
    • Ogre3D具有许多扩展,例如CEGUI或Bullet集成,Tree节点...
    • 但是,如果您需要一些特定的信息,则扩展Ogre3D会更加困难。
    • 大社区
    • 许多扩展
  • 水晶空间:设计较旧且难以使用。几天后,我停止使用此引擎。
  • 部落3D
    • 小型发动机
    • 现代设计
    • 灯社区
    • 没有扩展名
  • Blendelf
    • 小型引擎,具有某些依赖性
    • 具有现代效果的现代设计,如DOF或HDR ...
    • 仅限OpenGL
    • 灯社区
    • 物理子弹集成
    • 您使用lua引导此engine3D

TL; DR:

  • 对于台式机游戏(或未来的商业游戏):Ogre3D
  • 对于第一个游戏:Irrlicht
  • 对于移动开发:irrlicht(Ogre3D太大)
  • 性感效果:Blendelf

老实说,我不建议在移动开发中使用Irrlicht。它执行过多的内存分配,并且几乎没有提供自定义内存分配实现。由于在启动时进行了将近6万次分配,因此启动时是一个大问题。
西蒙

我在Android和IOS上使用Irrlicht,并且启动时间不是大问题...纹理加载的时间远远长于alloc ...
Ellis

@Simon您能解释一下“自定义内存分配实现”指的是什么吗?那是什么,为什么要呢?
临时用户名

2
@Aerovistae内存分配需要调用操作系统,这是非常昂贵的操作。通常,在创建游戏引擎时,您需要执行自己的内存管理,例如,一次分配一大块内存,然后自己在程序中分配该内存。这样,您只需要移动指针,而不必在每次需要额外的内存时都调用内核。这是一个相当高级的主题,需要高级指针算术,尤其是在您需要某种抗碎片机制的情况下。
德雷塔2012年

3
因此,当西蒙(Simon)说因为不提供自定义内存分配实现而不会推荐它时,这真的不适用于初学者甚至大多数中级开发人员吗?
临时用户名

21

最初的建议是Ogre3D


你有什么经验吗?它是否相当稳定,写得很好并且对3D初学者有好处?我可以轻松地在3D引擎列表中搜索(正如您从我的问题中看到的那样),我正在寻找更多关于哪个是一个好选择以及为什么的更好的见解。谢谢。
davr

1
但是Ogre3D并不是引擎。这是一个3D渲染库。您必须选择基于食人魔的引擎,也可以自行构建。

4
我在Ogre3d方面拥有丰富的经验;它非常稳定且编写很好,并且在处理日常任务(场景剔除,网格加载,广告牌/粒子)方面做得很好。火是正确的,因为它不是游戏引擎。但是Ogre可以(并且经常)与其他库合并成一个。这是“绘制单个三角形并编写自己的3D对象加载器”之上的绝妙步骤,但这只是一个渲染库。如果那是您想要的,那么它是一个很棒的图书馆,拥有一个积极支持的社区。
卡兰萨2010年

3
@Fire OGRE:面向对象的图形渲染引擎。这是引擎。它到处都有单身人士。绝对是引擎。
里奇(Ricket)2010年

3
@Ricket是的,它是图形引擎,但不是游戏引擎,这是他最有可能表示的意思,因为在食人魔文档中强烈强调了这一点。同样,单例(反)模式肯定与它是否是引擎无关。
拉乌尔

7

Open Scene Graph是一个非常好的,设计良好的跨平台3D引擎。例如,与Ogre3D相反,它不提供“游戏引擎”功能,而是专注于成为OpenGL之上的一个非常漂亮的抽象。

  • 它非常轻巧,不会在您身上强加框架:您可以根据需要使用任意数量的框架,也可以通过SDL,SFML,wxWidgets,QT来使用它。
  • 这是一次很棒的学习体验:在学习库的同时,您对底层OpenGL及其设计方式也越来越了解。
  • 几乎可以使用:它具有适用于主流3D格式的加载器
  • 着色器友好

看一看广泛的样本清单


4

在游戏引擎方面:

  • Torque3D:有很多功能,但是有些人会认为代码难以使用。
  • C4引擎:价格低廉,提供了出色的作者支持,但是工具可能需要一些工作。
  • 自己动手:选择一组库并将它们与您的游戏粘合在一起。

由于建议使用Ogre3D,因此还存在一种轻量级的Horde3D替代

优点:

  • 该设计是合理的,并且在重渲染方面可能会优于Ogre3D(如果还没有的话)
  • C API,使诸如Python之类的语言的绑定变得简单且易于维护(内部代码为C ++)

缺点:

  • 至少需要OpenGL 2.0支持
  • 较小的社区
  • 代码库不稳定(仍在进行主要的体系结构更改)

2
如果您重视理智,请避免使用Torque 3D。脚本引擎是一个混乱的噩梦,无法使用它。
Jared Updike

4

Irrlicht比Ogre3D提供了更多功能,同时还提供了更多动手操作(例如,感觉不像您只是在“启动引擎”并看着它在运行,感觉像是您在我认为应该是一个正在运行的命令)。

我认为开始会很棒!


4

我知道您要求使用C ++,但是Panda3D也可以与C ++一起使用,即使它最初的目标是与python一起使用。这是一个游戏引擎,但无论如何...


2

如果Ogre3D对您来说级别太低,那么显而易见的选择是NeoAxis:http : //www.neoaxisgroup.com/

它由Ogre提供支持,但是是一个完整的游戏开发平台。

它以.NET为目标,因此您可以使用C#,托管C ++,VB。

所以去吧。:)

Ogre3D可以在多种移动设备上运行,例如iPhone和Android。所以它不是太大。

不要将尺寸误认为性能。

我不确定IrrLicht是否支持iPhone,但Ogre3D是否支持。


如果在.NET上,您是否不能将IronPython添加到语言列表中?Python是一种很棒的脚本语言。
Jared Updike

2
。净?那不排除跨平台吗?
davr

.Net没有,但是Neo-Axis使用的是C ++ / CLI。
jsimmons 2010年

我今天与Neoaxis首席开发人员进行了交谈,他们宣布了今年9月对Mac OS X的支持。:)
jacmoe 2010年


1

到目前为止,很好的答案,但是我将添加果酱。它的移动性能很好。一群大型工作室已经发布了带有主机游戏的游戏,因此它具有凭据。甚至在其之上构建了一个类似单位的编辑器Shiva3D,该编辑器还允许跨平台。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.