我希望你帮我解决一个决策问题。
我是一个新手视频游戏程序员。我可以开发 Flash、Unity、Android 游戏,并且我知道一点 CryEngine。另外,我想在未来开发 3D 视频游戏。
所以,我决定学习一个可以使用 C/C++ 的视频游戏库。但是我应该学习 Allegro 或 OpenGL 还是其他库?还是我应该直接开始学习 DirectX 编程?学习 Allegro 编程是有用的(良好的基础)还是只是浪费时间?
但是我应该学习 Allegro 或 OpenGL 还是其他库?
首先也是最重要的:OpenGL 不是一个库!它的“L”曾经表示库,但最好将其反称为“层”,因为这就是如今 OpenGL 的真正含义:程序和图形硬件之间的层。
OpenGL 不是游戏引擎,也不是游戏图形库。OpenGL 是一个低级的绘图 API。你可以用它以花哨的方式绘制点、线和三角形。但是OpenGL中没有场景,没有对象等。这一切都必须由游戏引擎来实现。编写游戏引擎是一项非常艰苦的工作。如果你真的想这么做,我建议你看一下一年前发布的 Doom3 的源代码。
Allegro 几乎与 OpenGL 无关。
Allegro 是一个用于简单游戏开发的基本框架,提供基本的 2D 图形基元、用户输入、文本、声音、计时器等......您可以在 Allegro 下使用 OpenGL,但没有紧密和专门的集成。
OpenGL 是一个低级 API,专门用于图形。
如果您已经了解 Unity 和 CryEngine,请坚持使用它们。自己使用 OpenGL 来实现它们的一小部分功能将是一个巨大的困难。这并不意味着你不应该学习一些 OpenGL,即使是为了好奇和了解底层是如何工作的。
DirectX 受平台限制,虽然大多数游戏平台确实支持 DX,但 ARM 移动平台正在崛起,但 DirectX 无法在其上运行。OpenGL 几乎可以匹配 D3D 提供的所有东西,而且它更便携,所以它是更值得投资的 API,除非你只专注于 Windows 游戏。那么学习D3D就有意义了,它更容易使用。
许多游戏引擎,包括 Unity,将从图形 API 中抽象出来,并使用目标平台提供的最佳功能。
另外,请记住 OpenGL 在 Windows 8 的“metro”模式下不可用,因此如果您想要在 Metro 模式下使用高级图形,则必须使用 D3D,或者使用 ANGLE 并坚持使用模拟的 OpenGL 的更基本子集在 D3D 上使用 ANGLE。