Direct3D 入门

Direct3D 是一种低级 API,用于通过渲染管道绘制图元,或使用计算着色器执行并行操作。

什么是 Direct3D?

Direct3D 是一种低级别 API,可用于绘制每帧三角形、线条或点,或在 GPU 上启动高度并行操作。

Direct3D:

  • 在一致的抽象后面隐藏不同的 GPU 实现。 但仍需要了解如何绘制 3D 图形。
  • 设计为驱动单独的特定于图形的处理器。 较新的 GPU 具有数百或数千个并行处理器。
  • 强调并行处理。 设置一组呈现或计算状态,然后启动操作。 无需等待操作的即时反馈。 不要混合使用 CPU 和 GPU 操作。

可以使用哪些 Direct3D API?

选择的 Direct3D API 取决于要编写的应用的样式。

  • 如果要编写 UWP 应用,请使用 Direct3D 11、DXGI 和 HLSL API 的子集。 有关这些 API 的列表,请参阅 适用于 UWP 应用的 Win32 和 COM API。 若要了解如何编写 Direct3D 11 Windows 应用商店应用,请参阅 使用 DirectX 创建 3D 图形
  • 如果编写桌面应用,则可以使用完整的 Direct3D 11、DXGI 和 HLSL API 集。
  • 从Windows 8开始,我们不再主动支持桌面应用的 XNA 框架。 但 Windows 应用商店应用、UWP 应用和桌面应用可以使用完整的 XAudio2DirectXMath API 集。 桌面应用可以使用完整的 XInput API 集,而 Windows 应用商店应用和 UWP 应用可以使用大多数 XInput API:有关详细信息,请参阅 XInput 版本

哪个 Direct3D 版本?

所选的 Direct3D API 版本取决于要面向的操作系统和硬件级别。

  • 如果要以 Windows 8 及更高版本为目标,请使用 Direct3D 11 API。
  • 将 Direct3D 9 API 与 Windows XP 及更高版本配合使用。 所有硬件都支持 Direct3D 9 API,甚至支持较新的 Direct3D 11 级硬件。
  • 将 Direct3D 10 API 与 Windows Vista 及更高版本配合使用。 只有 Direct3D 10 级别及更高版本的硬件支持 Direct3D 10 API。
  • 将 Direct3D 10.1 和 Direct3D 11 API 与 Windows 7 及更高版本配合使用。 还可以将 Direct3D 10.1 和 Direct3D 11 API 与 Windows Vista 与 Service Pack 2 (SP2) 配合使用。

Direct3D 渲染管道

在 Direct3D 呈现管道中,数据来自多个源,例如河流的支流。

  • 流的某些部分是可编程的。
  • 某些部件有旋钮和拨盘。
  • 数据源是数据包的串行流 (顶点) 或可索引数组 (着色器资源) 。
  • 顶点和着色器资源流入可以放大的基元。
  • 基元和着色器资源流入像素操作。

Direct3D 计算着色器

使用 Direct3D 计算着色器时,所有 GPU 处理器都并行执行。 因此,计算着色器的行为更像是一个池塘,而不是一个河流。