OpenGL还是DirectX?

时间:2009-08-06 18:35:28

标签: c++ opengl directx

我知道这可能是一个非常主观的问题,但我只是想从最简单,最快速的学习开始,这样我就可以尽快开始我的一个小项目,这是一个小2D游戏,至少从...开始。你建议我选择哪一个?我正在使用C ++

6 个答案:

答案 0 :(得分:20)

第一个问题:你在Windows上吗?如果没有,请使用OpenGL。

如果你在Windows上,这将归结为品味问题。 API不同,但OpenGL和DirectX所需的概念非常相似。大多数东西都得到了支持,尽管它们确实有所不同。

Microsoft提供了相当多的示例和一个可以用于DirectX(9或10)的合适框架,这可以使它更容易上手。

话虽如此,如果你只针对Windows Vista / Win7,那么转移到DirectX 10可能会让生活更轻松。在DX10中删除了DX9及更早版本中的许多烦恼,并且API更加干净。

话虽如此,如果这是针对游戏,我建议使用像Ogre这样的中间件引擎,而不是直接在DirectX或OpenGL中编写。这将使您的生活更加简单,尤其是在学习的过程中。

答案 1 :(得分:6)

我没有使用过DirectX,但OpenGL相当简单,并且在NeHe有一些很好的初学者教程。另外,如果你想跨平台,你需要OpenGL 但是,DirectX不仅仅是一个图形库,你也可以将它用于声音等等,所以它可能值得一试。

答案 2 :(得分:5)

如果它只是2D,那么或许可能值得研究SDL,这已经是跨平台的并且看起来很容易学习。网上有很多教程,但我记得的一个特定网站是Lazy Foo's SDL Tutorials。您也可以将OpenGL与SDL混合使用,也有相关的教程。

如果你不想使用SDL,并且你在Windows上,我会推荐使用DirectX。我确实认识到它们之间的选择最终会在互联网上的任何地方都发生火焰战,但我的理解是DirectX对游戏开发者来说是 geared ,所以你会发现很多实用程序库,函数,以及可能促进各种任务的类。使用OpenGL,您可以编写跨平台代码,前提是图像加载等辅助功能也是跨平台的(确实存在跨平台库)。

所以我的底线是:两者都很好,OpenGL为您提供跨平台代码(提供您编写),DirectX为您提供更多面向游戏开发的工具和库。

答案 3 :(得分:4)

如果一切尽快开始,我建议在NVidia GPU上使用OpenGL。你几乎可以扔任何东西,它会显示出一些东西。但是,如果您希望以较低的编程工作获得不错的性能,我建议使用Direct3D。在OpenGL中有太多的方法可以做,并且初学者肯定会首先发现慢速路径,因为它们被许多古老的教程所覆盖(参见NeHe)。此外,调试OpenGL应用程序很痛苦,尽管像gDEBugger这样的工具可以提供帮助。

答案 4 :(得分:3)

如果你有一些COM经验并且它不会让你头疼,我会推荐DirectX,因为SDK有很多很好的例子/教程,开箱即用。如果你更喜欢更多C风格的编程或者与COM的东西混淆,那么我会说OpenGL。

答案 5 :(得分:2)

正如其他几位人士所指出的那样,如果你打算将你的“游戏”移植到Windows以外的其他平台,你最好开始使用OpenGL。

如果它只是一个简单的2D游戏,而你现在不需要3D支持,那么SDL将是更好的选择,之后你可以将“SDL”和“OpenGL”结合起来。 (你可以直接使用SDL中的openGL,它甚至在SDL中都有自己的头文件。)

同时,DirectX提供OpenGL和SDL都无法提供的功能。 OpenGL远远落后于DirectX。 [OpenGL 3.0只不过是一次增量更新,自2.x以来API没有太大变化。

因此,如果您打算为Windows编写游戏,只需使用“DirectX”,如果不是“OpenGL”和“Sdl”。

最后,如果您不是在寻找头痛,只需使用GameEngine,例如: C4 Engine。相信我,当你选择3D时,你别无选择,因为有太多的主题需要很多时间来“挖掘”和“学习”。