MSDN上的DXGI概述表示,DXGI API (10、11和12)位于DXGI的顶部,DXGI位于硬件之上,如下图所示:
本文进一步指出,DXGI的主要任务是枚举适配器并在屏幕上显示图像。现在,如果DirectX位于DXGI之上,那么如何在实际硬件(GPU)上调用所有与数学相关的任务?或者架构概述是错误的,D3D_也直接访问硬件吗?
发布于 2017-02-26 20:02:39
这个关系图是一个逻辑映射,而不是所有事物实际实现的显式映射。实际上,Direct3D和DXGI更多地是“并排”的,包括用户模式驱动程序(UMD)和内核模式驱动程序(KMD)的层是使用设备驱动程序接口(DDI)与内核模式通信的Windows显示驱动模型(WDDM)。在大多数情况下,Direct3D的不同版本也会被“翻转”,以使用相同的DDI (例如,Direct3D 9,一个Direct3D 10遗留应用程序最终会在可能的情况下通过相同的Direct3D 11代码页)。
由于" DXGI“的意思是"DirectX图形基础设施”,这个图表将DXGI与WDDM和DDI合并在一起。
DXGI的目的是将视频硬件/输出枚举以及交换链创建/表示与Direct3D分离。回到Direct3D 9及之前,这些都是集中在一起的。理论上,DXGI在Direct3D版本之间应该不会有太大的变化,但在实践中,它的发展速度与处理Windows应用程序/通用Windows应用程序的CoreWindow交换链模型的变化基本相同。
许多DXGI API实际上是内部使用的,特别是在处理表面创建时。您需要使用Direct3D API来创建Direct3D资源,而不是直接使用DXGI创建它们,但是您可以在一些地方使用QueryInterface
来获得一个DXGI表面,以执行某些操作,比如API面间共享。对于Direct3D 11.1或更高版本,大多数设备共享行为都是自动化的,因此您不必在Direct3D 11中使用DXGI来使用Direct2D/DirectWrite。
,真正的问题是:,为什么它对你很重要?
https://stackoverflow.com/questions/41081352
复制相似问题