opengl和directX之间的比较

时间:2010-11-13 08:25:21

标签: opengl directx

  

可能重复:
  OpenGL or DirectX?

不想引发战争,但是真的想知道这两个主流图形库的优缺点吗?

3 个答案:

答案 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。

无论如何,这是我完全有偏见的观点:

  • Direct3D在Windows,Xbox和有时 Wine上运行(取决于特定的应用程序/游戏)。选择Direct3D可以将您的产品与Microsoft平台紧密联系起来。
  • Direct3D中的编码(至少是我几年前的最后一次尝试)在蜂蜜中裸奔,走到一个大黄蜂的窝里,从它上面敲打焦油听起来像是一个愉快的下午。 / LI>
  • OpenGL几乎可以在任何可以想象的平台上运行,并支持Direct3D在即时模式下所做的大部分工作。
  • OpenGL API大部分都是干净的,并且很乐意进行编码。