Direct3D是一个低级API,用于使用渲染管道绘制基元或使用计算着色器执行并行操作。
什么是Direct3D?
Direct3D是一个低级API,可用于每帧绘制三角形,线条或点,或在GPU上启动高度并行操作。
Direct3D:
- 在连贯的抽象背后隐藏不同的GPU实现。但是你仍然需要知道如何绘制3D图形。
- 旨在驱动单独的图形专用处理器。较新的GPU具有数百或数千个并行处理器。
- 强调并行处理。您设置了一堆渲染或计算状态,然后开始操作。您不必等待操作的即时反馈。您不要混合CPU和GPU操作。
您可以使用哪些Direct3D API?
您选择的Direct3D API取决于您要编写的应用程序的样式。
- 如果要编写Windows应用商店应用,请使用Direct3D 11,DXGI和HLSL API的子集。有关这些API的列表,请参阅适用于Windows应用商店应用(图形)的Win32和COM。要了解如何编写Direct3D 11 Windows应用商店应用,请参阅使用DirectX的3D图形简介。
- 如果您为桌面编写应用程序,则可以使用完整的Direct3D 11,DXGI和HLSL API。
- 从Windows 8开始,我们不再主动支持桌面应用程序的XNA框架。但Windows应用商店应用和桌面应用可以使用全套XAudio2和DirectXMath API。桌面应用程序可以使用全套XInput API,而Windows应用商店应用程序可以使用大多数XInput API; 有关详细信息,请参阅XInput版本。
哪个Direct3D版本?
您选择的Direct3D API版本取决于您要定位的操作系统和硬件级别。
- 如果要以Windows 8及更高版本为目标,请使用Direct3D 11 API。
- 在Windows XP及更高版本中使用Direct3D 9 API。所有硬件都支持Direct3D 9 API,甚至更新的Direct3D 11级硬件。
- 在Windows Vista及更高版本中使用Direct3D 10 API。只有Direct3D 10级和更高版本的硬件支持Direct3D 10 API。
- 在Windows 7及更高版本中使用Direct3D 10.1和Direct3D 11 API。您还可以通过下载KB 971644将Direct3D 10.1和Direct3D 11 API与Windows Vista Service Pack 2(SP2)一起使用。
Direct3D渲染管道
在Direct3D 渲染管道中,数据来自多个来源,就像河流的支流。
- 流程的某些部分是可编程的。
- 有些部件有旋钮和表盘。
- 数据源是包的串行流(顶点)或可索引的数组(着色器资源)。
- 顶点和着色器资源流入基元,您可以放大。
- 基元和着色器资源流入像素操作。
Direct3D计算着色器
使用Direct3D 计算着色器,所有GPU的处理器并行执行。因此,计算着色器的行为更像是池塘而不是河流。