好吧,我研究了很多,并得出了关于API的基本结论:似乎API学习的选择并不重要,只要你能真正学习3D编程,或者看起来是这样。
我的背景/当前研究领域:我在编程、算法和面向对象设计方面有着扎实的背景。
我制作了一些2D游戏:使用XNA(C#)和allegro 5(C++),我甚至为一门课程(使用allegro)必须制作的一些2D游戏编写了一种小框架,以加快我的游戏制作过程,所以我非常熟悉游戏逻辑和游戏循环结构的基本概念。
我用XNA做了一些3D实验,实际上只是得到了基本的想法。
我对线性代数和微积分有基本但扎实的知识。
我目前正在研究人工智能、机器学习(更具体地说,如果有人想知道的话:使用Markov逻辑为阅读系统提取关系数据库的规则),目前正在该领域进行一些研究。
嗯,我喜欢游戏,对游戏编程很感兴趣,尤其是AI和游戏逻辑。
我现在想转向3D游戏开发,尽管我真的不想在图形编程和其他方面做太多工作,但我想掌握这些知识(好吧,我想知道发生了什么,以及如何利用这些知识:如果我想为3D环境编写一些好的人工智能,我需要对如何处理它有一个很好的想法)。
我(今天)刚开始阅读Direct3D(9和11)的示例和文档,从我读到的内容来看,如果我要学习DirectX,如果硬件兼容性低和XP用户不是我的目标,我应该选择11。
我想听听你对我应该使用DirectX还是SDL/ONGL/OpenAL之类的东西的看法。我不反对任何东西。我只想知道,对于那些想专注于游戏和游戏逻辑的新人工智能的人来说,哪一个更好。我将在游戏中使用C++/Python,在一些工具中使用一些C#/XML等等。好吧,我基本上会在windows环境中开发一些东西(没有反对linux之类的东西——我用linux来研究我使用的一些软件的人工智能)。
好吧,我希望我把我的问题说清楚了,并提前感谢任何愿意帮助我的人。
正如这里和@leppie所说,OpenGL是跨平台的,因此您必须学会使用一个框架,该框架将在当今大多数平台上工作。
尽管我从未真正使用过OpenGL,但根据我在开源项目方面的经验,很难找到好的文档,尽管你很可能会在网上找到很多例子。因此,您可能很难找到好的文档(再次,基于我以前使用的开源项目)。
另一方面,DirectX是在Windows环境中运行的东西。它似乎也是许多游戏开发商的首选工具,这似乎就是你想要的。使用DirectX还可以让你利用Visual Studio(在我看来,如果不是我使用过的最强大的IDE的话,它也是一个非常强大的IDE),如下所示。
总的来说,你所问的是一场已经持续多年的辩论(这里和这里仅举几个例子)。
编辑:
就像编程世界中的大多数事情一样,如果你尝试列出给定的事情,某个平台会给你带来优势。不同的列表需要不同的平台/框架等。我从来没有真正摆弄过这些技术,但是,我认为微软有时倾向于让使用其产品的开发人员的生活比使用开源产品的开发员稍微轻松一些。
你可以做的是尝试遍历一些代码,或者尝试想出自己的代码,使用这两个框架做同样的事情,然后选择更容易的一个。
您可能需要记住的一点是:据我所知,OpenGL(毕竟,如果我没有提出完全错误的树,它代表开放图形库)只是用于图形的。另一方面,DirectX还提供声音、音乐、通过各种控制器输入等功能,因此,如果跨平台不是你的主要问题,并且你想专注于逻辑和人工智能,DirectX可能会帮助你更快地启动某些功能,而使用OpenGL(我一般不想敲它),你可能需要寻找声音和输入API。