Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Directx 理解DXGI_Directx_Dxgi - Fatal编程技术网

Directx 理解DXGI

Directx 理解DXGI,directx,dxgi,Directx,Dxgi,MSDN上的说明是Direct3D API(10、11和12)位于DXGI之上,而DXGI位于硬件之上,如下图所示: 本文进一步提到,DXGI的任务基本上是枚举适配器并在屏幕上显示图像。现在,如果DirectX位于DXGI之上,那么在实际硬件(GPU)上如何调用所有与数学相关的任务?还是架构概述错误,D3D也直接访问硬件?此图是一个逻辑图,而不是所有实际实现方式的明确图。实际上,Direct3D和DXGI更“并排”,包含用户模式驱动程序(UMD)和内核模式驱动程序(KMD)的层是使用设备驱动程

MSDN上的说明是Direct3D API(10、11和12)位于DXGI之上,而DXGI位于硬件之上,如下图所示:


本文进一步提到,DXGI的任务基本上是枚举适配器并在屏幕上显示图像。现在,如果DirectX位于DXGI之上,那么在实际硬件(GPU)上如何调用所有与数学相关的任务?还是架构概述错误,D3D也直接访问硬件?

此图是一个逻辑图,而不是所有实际实现方式的明确图。实际上,Direct3D和DXGI更“并排”,包含用户模式驱动程序(UMD)和内核模式驱动程序(KMD)的层是使用设备驱动程序接口(DDI)与内核模式通信的层,内核模式反过来与硬件通信。Direct3D的各种版本也被“放样”在一起,以便在大多数情况下使用相同的DDI(即Direct3D 9和Direct3D 10遗留应用程序最终可能通过相同的Direct3D 11代码路径)

由于“DXGI”意味着“DirectX图形基础设施”,因此该图将DXGI API与WDDM和DDI结合起来

DXGI API的目的是将视频硬件/输出枚举以及swapchain创建/表示与Direct3D分离。在Direct3D 9和之前的版本中,这些都是集中在一起的。理论上,DXGI在Direct3D版本之间应该不会有太大变化,但实际上,它的发展速度基本上与针对Windows应用商店应用程序/通用Windows平台应用程序的CoreWindow swapchain模型的许多变化相同

许多DXGI API实际上是供内部使用的,特别是在处理曲面创建时。您需要使用Direct3D API创建Direct3D资源,而不是直接使用DXGI创建资源,但您可以在某些位置使用
QueryInterface
来获取DXGI曲面,以执行某些操作,如API间曲面共享。使用或更高版本,大多数设备共享行为都已自动化,因此您无需处理DXGI即可将Direct2D/DirectWrite与Direct3D 11一起使用

真正的问题是:为什么这对你很重要

看到和


非常感谢您的详细解释。我一直对事物内部的运作方式感到好奇。就像你在计算机科学课上学到的大多数东西一样,在现实生活中没有直接的应用。