Direct3D应该在Windows中使用OpenGL吗?

jma*_*erx 10 c c++ opengl directx

由于微软通常对Direct3D有一点偏见,在Direct3D中使用VBO的场景会比在OpenGL中使用VBO的场景更快,还是因为它取决于显卡驱动程序会不一样?谢谢

jal*_*alf 20

性能方面,假设GPU驱动程序不错,总体上没有差异.

虽然DX10可以解决这个问题,但OpenGL中的某些操作本身比DirectX9更快.

但是,使用外部硬件时的一个好的经验法则是,您使用的API不是决定性能的API.

当写网络代码的瓶颈是网络适配器,如果你的套接字代码是写在.NET,在C平原Berkeley套接字,或者使用一些Python库也没关系.

在编写使用GPU的代码时,GPU是限制因素.DirectX和OpenGL之间最大的区别是,一个可能需要一个函数调用或两个比对方多,实现特定的任务 - 和其性能成本是非常不存在的.会发生什么事的GPU是在两种情况下是相同的,因为这是你的GPU驱动程序确定的,因为这两个OpenGL和DirectX尝试尽可能高效.

但是有正当理由偏爱任何API.

DirectX具有更好的工具支持.微软做得非常好.使用PIX等工具可以更轻松地调试和优化DirectX代码.Microsoft还提供了辅助库D3DX,它提供了许多常用功能的高效实现.

OpenGL的优势在于它不依赖于特定的操作系统.DirectX9仅适用于Windows.DX10及以上版仅适用于Vista及以上版本.

OpenGL适用于已编写OpenGL驱动程序的任何操作系统.

在Windows上,情况有时有点尴尬.Windows本身只附带OpenGL的古老实现.(相信v1.1的XP,和1.5的Vista/7).

因此,Windows上的OpenGL应用程序依靠GPU供应商为其驱动程序提供更新的实现.ATI和NVidia确实提供了非常好的实现,所以它不是一个很大的问题.英特尔的OpenGL驱动程序通常在质量和支持功能方面都落后.