在地幔,dx和ogl上的表现

row*_*n.G 1 opengl directx 3d graphics mantle

因此,最近所有关于3D图形的新API的骚动,据说可以大量加速图形,我想知道为什么以前没有这样做过.旧方式和新方式之间有什么不同?

我想知道它是如何实现的,甚至可以概述它是如何工作的从GPU到驱动程序到DX或OGL的API.

Chu*_*urn 6

发生的主要事情是GPU甚至在各个供应商中已经变得非常标准化.DirectX和OpenGL历来花了很多精力来隐藏各种供应商的GPU设计之间的差异,其中许多过去都有相当独特的硬件架构 - OpenGL一直是一个非常"漏洞"的抽象,与所有那些数以万计的供应商特定的扩展.

与过去相比,DirectX 12和Mantle都暴露了GPU的更多基础行为,因此运行时库比底层驱动程序的抽象更薄.这种方法不适用于所有的视频卡,特别是传统的DirectX和OpenGL可以支持的许多旧视频卡 - OpenGL带有可追溯到几十年前的巨大传统支持.为了使DirectX 10的GPU功能正常化,然后DirectX 11使得来自不同供应商的消费级PC图形硬件从DirectX的早期开始就变得不那么古怪了.

要记住的另一件事是,这种权衡还需要更多的应用程序/游戏本身来正确处理CPU/GPU同步,有效驱动硬件,跟踪和详尽描述他们使用的状态组合,并且通常运行几乎没有来自运行时的安全性和支持级别.

编写DirectX 12应用程序比现在的DirectX 11或OpenGL需要更多的图形编程技能.在Direct3D 9中设置设备/交换链和简单的渲染场景可能需要几十行代码,在Direct3D 11中几百行,但在DirectX 12中需要更多,因为应用程序本身必须执行所有使用的单独步骤要在运行时"通过魔法"完成.这可以让应用程序/游戏调整确切的顺序,也可以跳过它们实际上不需要的步骤,但是它们就是它们而不是运行时才能实现.

引用本叔叔的话,强大的责任带来了巨大的责任.

开发人员多年来一直坚持要求他们在PC上使用"类似控制台"的API,所以现在他们会发现他们是否真的想要它.对于游戏引擎编写者,具有自定义引擎的AAA游戏以及技术演示场景,拥有如此近乎直接的硬件控制权是非常酷的.对于凡人而言,使用DirectX 11一段时间或使用已经实现DirectX 12的引擎会容易得多.