用于空间模拟器的OpenGL

时间:2009-12-02 11:06:00

标签: java opengl 3d glut direct3d

与几个朋友一起,我们开始了这个独立于业余平台的基于Java的项目,用于太空战斗模拟器游戏(类似于翼指挥官的长期死亡传奇)。我们都不是3D程序员,所以道路会很长。

我的问题是:在我们的位置你会开始学习OpenGL(可能是通过GLUT)还是今天有更好的可能性?那么Direct3D呢?你可以建议的任何书籍?我们订购了一对,特别是

  • Dave Shriner的OpenGL编程指南
  • Luke Benstead的初学OpenGL游戏编程

6 个答案:

答案 0 :(得分:5)

考虑使用像Ogre3DIrrlicht这样的开源3D引擎。通过这种方式,您可以专注于制作游戏:内容,游戏。

两个引擎都定义了一个可以映射到Direct3D或OpenGL后端的抽象层。

编辑:起初我没有注意到你提到了Java,无论如何两个引擎都支持Java绑定。

答案 1 :(得分:3)

如果您决定学习低级图形编程而不是使用更高级别的3D引擎(如Ogre3D或Irrlicht),我建议从OpenGL ES 2.X开始,这是OpenGL的一个子集。

OpenGL ES 2.X是OpenGL的简化子集,适用于具有可编程硬件(如电话)的嵌入式系统。例如,在OpenGL中可能有多种方法可以完成任务,但在Open GL ES 2.X中,只有一种方法。因为OpenGL ES 2.X的选择较少,所以掌握OpenGL ES 2.X的知识要少得多。 “OpenGL ES 2.0编程指南”共480页,“OpenGL编程指南”第7版为936页。

此外,使用OpenGL ES 2.X将为您的游戏提供更广泛的硬件受众。因为它是OpenGL的一个子集,所以为OpenGL ES 2.X编写的代码可以在很少或没有修改的情况下在完整的OpenGL系统上运行。您的游戏图形可以在从台式机到智能手机的各种目标机器上运行。

答案 2 :(得分:2)

您可以选择像Ogre3D这样的开源3D引擎。

但是如果你真的想自己编写图形引擎(非常有趣),那么首先要学习线性代数。不是很先进的东西,但你应该非常适应在翻译向量,旋转矩阵等中表达自己。

如果您已经熟悉这些概念,请选择Direct3D或OpenGL - 这更多地取决于可用平台。如果您想在Mircosoft环境中进行编码,请选择Direct3D,其他所有内容,请选择OpenGL。

其他库的选择取决于编程语言。比GLUT更好的替代品可能是SDL(C)或Qt(C ++)。

答案 3 :(得分:1)

好吧,如果你以前从未做过3D图形编程,那就去简单,随时随地学习。 NeHe(Neon Helium)曾经为OpenGL提供了一套非常好的教程,这是我选择的路线。

答案 4 :(得分:1)

我发现OpenGL更容易入手,因为学习曲线不是那么陡峭。你可以得到快速的结果,这有助于最初的挫折/动机。大量的帮助等警告的话 - 3D编程本质上很复杂,你将花费更多的精力来构建图形技术而不是游戏本身。如果你真的想看到游戏结束,请考虑采用Ogre3D:o)(免责声明:我知道还有其他引擎,但Ogre稳定,经过验证并附带了良好的文档)

答案 5 :(得分:0)

如果您希望保持与平台无关,则DirectX将无法执行,因为它仅限于Microsoft Windows平台