可能重复:
OpenGL or DirectX?
不想引发战争,但是真的想知道这两个主流图形库的优缺点吗?
答案 0 :(得分:6)
老实说,困难的部分不是API,而是更高级别的3D东西。下面两个API都有顶点缓冲区,索引缓冲区,纹理,着色器等等,虽然它们以不同的方式表达,但这些概念不是API的难点。如果您了解d3d11,那么您将立刻获得opengl,反之亦然。
实际考虑因素是opengl可以在更多平台上使用,但d3d往往更好地支持并且在Windows平台上运行得更好。 d3d有一个更面向对象的接口,而opengl有一个严格的“c”样式接口(虽然它通过“名称”和句柄在内部处理对象)。这可能使得opengl比d3d11更容易开始学习,而d3d11需要相当多的设置 - 但在“真实”的应用程序中,它不会有太大的内容。
d3d11旨在更好地在多核cpu和多线程软件上运行。这增加了使用它的一些复杂性,但允许您在此时更多地利用硬件然后opengl。 (但是,如果你仍处于询问使用哪个阶段,那么对你来说这不太重要!)
找到d3d9的文档要比opengl容易得多(我的意思是“现代”的东西,而不是使用过时的做事方式的例子(这是opengl的问题,很多教程和代码输出)坦率地过时了,现在并没有真正使用opengl。)然而,很难找到好的d3d11示例和教程。
如果您没有使用过,我会非常推荐学习BOTH的基础知识以及对相同基础功能的略微不同的方法。不要陷入困境,说一个比另一个更好,学习两者,看看哪个更合适。这是大多数人所做的事情,不幸的是,你在互联网上获得的大多数“建议”似乎来自那些决定推动一个或另一个API对他们很重要的人!
我在学习使用创建纹理,顶点缓冲区,索引缓冲区,渲染集合等的小型c ++框架来抽象出差异时,发现它是一个有用的练习,并根据两个apis /./实现这些概念。
答案 1 :(得分:5)
OpenGL是一个用于3D图形的跨平台API。 DirectX是一种用于图形,音频,音乐,设备输入,网络等的受限平台API。
答案 2 :(得分:2)
首先,DirectX不仅仅是3D加速渲染。我假设你在谈论Direct3D。
无论如何,这是我完全有偏见的观点: