我知道这可能是一个非常主观的问题,但我只想从最容易和最快学习的开始,以便我可以尽快开始我的小项目,起码先做一个小的2D游戏。你会推荐我选哪个?而且我使用的是C++。
第一个问题:您是否使用Windows系统?如果不是,请使用OpenGL。
如果您使用的是Windows系统,则这将成为一种品味问题。虽然OpenGL和DirectX的API有所不同,但所需的概念非常相似。大多数事情都可以在两者上支持,尽管它们的工作方式略有不同。
微软提供了相当多的示例和一个不错的框架,您可以用于DirectX(9或10),这可以使入门变得更加容易。
话虽如此,如果您的目标仅限于Windows Vista/Win7,那么切换到DirectX 10可能会更容易。在DX9及更早版本中的许多烦恼都在DX10中被移除,并且API更加简洁。
话虽如此,如果这是一个游戏,我建议您考虑使用中间件引擎,例如Ogre,而不是直接使用DirectX或OpenGL进行编写。特别是在学习阶段,这将使您的生活更加简单。
我没有使用过DirectX,但OpenGL相对简单,并且在NeHe有一些好的入门教程。此外,如果您想要跨平台,您将需要使用OpenGL。
不过,DirectX不仅仅是一个图形库,您还可以用它来处理声音等,所以值得一试。
如果您希望尽快开始,我建议使用NVidia GPU上的OpenGL。您可以将几乎任何东西投入其中,它都会显示出来。但是,如果您想以较低的编程工作量实现良好的性能,则建议使用Direct3D。在OpenGL中有太多的做事方式,初学者肯定会首先发现缓慢的路径,因为它们被许多古老的教程(参见NeHe)所覆盖。此外,调试OpenGL应用程序很痛苦,尽管像gDEBugger这样的工具可以提供帮助。
如果您有一些COM经验,并且不会让您感到头疼,我建议使用DirectX,因为SDK提供了很多好的示例/教程。如果您更喜欢C风格编程或对COM内容感到困惑,则我建议使用OpenGL。