GPU DirectX VS OpenGL支持

据我了解,GPU供应商定义了OS开发人员用来与其特定驱动程序进行通信的标准接口。 所以DirectX和OpenGL只是该接口的包装器。 当操作系统开发人员决定创建Graphic API的新版本时,GPU供应商扩展他们的界面(新的例程更快,更老的会留下兼容性问题),操作系统开发人员使用这个新的界面部分。
因此,当GPU供应商对DirectX的支持优于OpenGL时,是否仅仅意味着GPU供应商主要考虑到了微软未来开发DirectX API结构的计划,并根据他们的需求调整此接口的未来发展? 或者之前有一些技术原因?


据我了解,GPU供应商定义了OS开发人员用来与其特定驱动程序进行通信的标准接口。 所以DirectX和OpenGL只是该接口的包装器。

不,不是。 DirectX和OpenGL只是定义API的规范。 但是规范只不过是一个文档,而不是软件。 OpenGL API规范由Khronos控制,DirectX API规范由Microsoft控制。 然后,每个操作系统定义一个所谓的ABI(应用程序二进制接口),指定操作系统支持哪些系统级别的API(OpenGL和DirectX是系统级API),以及在OS上运行时实际实现必须遵守的规则题。

实际的OpenGL或Direct3D实现发生在硬件的驱动程序中(实际上硬件本身也是实现的一部分)。

当操作系统开发人员决定创建Graphic API的新版本时,GPU供应商将扩展他们的界面

事实上,这是相反的:大多数图形API规范都是由图形硬件供应商制定的。 毕竟他们靠近橡胶撞击道路的地方。 在Khronos的情况下,GPU制造商是Khronos控制组的一部分。 在DirectX的情况下,硬件制造商将提交草稿并审核Microsoft提出的更改和建议。 但最终每个新的API版本都反映了开发中下一代硬件生成能力的共同特征。

因此,当GPU供应商对DirectX的支持优于OpenGL时,是否仅仅意味着GPU供应商主要考虑到了微软未来开发DirectX API结构的计划,并根据他们的需求调整此接口的未来发展?

不,这意味着每个GPU供应商都实现了他自己的OpenGL版本和Direct3D后端,这就是所有魔术发生的地方。 然而,OpenGL强调向后兼容性和易于转换到新功能。 Direct3D开发OTOH可以快速切换与早期版本的关系。 这也意味着全面的兼容性配置文件OpenGL的实现是相当复杂的野兽。 这也是为什么OpenGL核心配置文件的最新版本确实(逾期)在减少对遗留功能的支持方面发挥作用的原因; API复杂度的降低对开发人员来说也是一件非常容易解决的事情。 如果您纯粹为核心配置文件开发,它会简化许多事情; 例如,在编写插件时,您不再需要担心内部过多的状态。

另一个因素是,对于Direct3D,只有一个着色器编译器,它不是驱动程序基础结构/实现本身的一部分,而是在程序构建时运行。 然而,OpenGL实现必须实现他们自己的GLSL着色器编译器,这很复杂。 恕我直言,缺乏统一的AST或即时着色器代码是OpenGL的主要缺陷之一。


图形硬件抽象与OpenGL和Direct3D等图形API之间不存在1:1的对应关系。 作为Windows Vista驱动程序模型的WDDM定义了诸如通用调度,内存管理等等,以便DirectX和OpenGL应用程序可以互操作,但是DirectX,OpenGL或GPU的设计通常与此无关。 将它看作内核,没有人会专门创建一个CPU来运行它,并且每次处理器体系结构的新迭代出来时都不必重新编译内核,从而增加了新的子集指令。

应用程序开发人员和IHV(GPU供应商,就像您称之为)是主要处理GPU架构变化的人员。 看起来操作系统与实际操作系统有更多关系,因为微软(更多)和苹果(他们都维护自己的专有操作系统)在DirectX和OpenGL的设计中都很有影响力。 现在,OpenGL密切关注商用桌面GPU硬件的开发,但事实并非总是如此 - 它包含了定制SGI工作站时代的包袱,兼容性配置文件中的许多东西几十年来都不是桌面GPU上原生的硬件。 另一方面,DirectX一直遵循桌面硬件。 它曾经是如果你想要指出桌面GPU的前进方向,D3D是一个很好的标记。

可以说OpenGL比DirectX更复杂,因为直到最近它才从不放过任何东西,而DirectX从根本上重新定义了API,并在每次迭代时都剥离了遗留支持。 这两种API在最近几年都已经稳定下来,但D3D仍然保持着一些优势,因为它只需要在单一平台上实现,并且微软编写了独一无二的着色器编译器。 如果有的话,D3D中的着色器编译器和最小功能集(无效的传统行李)可能是为什么你会得到供应商更好地支持它的印象。

随着AMD Mantle的出现,桌面图片可能会再次发生变化(回想3Dfx和Glide的日子)......它肯定会证明OS开发人员与图形API设计很少有关系。 NV和AMD在PS3,GameCube / Wii / WiiU和PS4上都拥有专有的API,除了桌面上的D3D和OpenGL之外,它们还需要实现,因此整体情况比您想象的要宽泛得多。

链接地址: http://www.djcxy.com/p/38419.html

上一篇: GPU DirectX VS OpenGL support

下一篇: OpenGL version still remains 1.1