和几个朋友一起,我们开始了这个业余的、独立于平台的、基于 java 的太空战斗模拟器游戏项目(有点像翼指挥官的长死传奇)。虽然我们都不是 3D 程序员,所以这条路会很长。
我的问题是:在我们这里,你会开始学习 OpenGL(也许通过 GLUT)还是今天有更好的可能性?Direct3D 呢?有什么书可以推荐吗?我们点了一对,特别是
- Dave Shriner 的 OpenGL 编程指南
- Luke Benstead 的 OpenGL 游戏编程入门
考虑使用像Ogre3D或Irrlicht这样的开源 3d 引擎。这样你就可以专注于制作游戏:内容、玩法。
两个引擎都定义了一个可以映射到 Direct3D 或 OpenGL 后端的抽象层。
编辑:起初我没有注意到你提到 Java,反正两个引擎都支持 Java 绑定。
如果您决定学习低级图形编程而不是使用 Ogre3D 或 Irrlicht 等高级 3d 引擎,我建议您从 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 Programming Guide 是 480 页,OpenGL Programming Guide, Seventh Edition 是 936 页。
此外,使用 OpenGL ES 2.X 将为您的游戏提供更广泛的硬件受众。因为它是 OpenGL 的一个子集,所以为 OpenGL ES 2.X 编写的代码可以在一个完整的 OpenGL 系统上运行,几乎不需要修改。您的游戏图形可以在从台式机到智能手机的各种目标机器上运行。
您可以选择像Ogre3D这样的开源 3D 引擎。
但是如果你真的想自己写图形引擎(很有趣),那就从学习线性代数开始吧。不是很高级的东西,但你应该很擅长用平移向量、旋转矩阵等来表达自己。
如果您已经熟悉这些概念,请选择 Direct3D 或 OpenGL - 这更多地取决于可用平台。如果您喜欢在 Mircosoft 环境中编码,请选择 Direct3D,其他一切,请选择 OpenGL。
附加库的选择取决于编程语言。比 GLUT 更好的替代品可能是 SDL (C) 或 Qt(C++)。
好吧,如果您以前从未进行过 3D 图形编程,请尽量简单并随用随学。NeHe(Neon Helium)曾经有一组非常好的 OpenGL 教程,这就是我所采取的路线。
我发现 OpenGL 更容易上手,因为学习曲线不是那么陡峭。您可以获得快速的结果,这对最初的挫折/动机有很大帮助。大量的帮助等等。虽然警告的话 - 3D 编程本质上是复杂的,你将花费更多的精力来构建图形技术而不是游戏本身。如果你真的想看到游戏完成,可以考虑采用 Ogre3D :o)
如果您想保持平台独立,DirectX 将不会这样做,因为它仅限于 Microsoft Windows 平台