D3D12 代码 Walk-Throughs

本部分提供示例方案的代码。 许多演练提供了有关将编码添加到基本示例所需的代码的详细信息,以避免对每个方案重复基本组件代码。

有关最基本的组件,请参阅 创建基本 Direct3D 12 组件 部分。 以下演练介绍了更高级的方案。

在本部分中

主题 描述
使用 D3D11on12 D2D
D3D1211on12 示例演示如何通过在基于 11 的设备与基于 12 的设备之间共享资源,通过 D3D12 内容呈现 D2D 内容。
多引擎 n 体重力模拟
D3D12nBodyGravity 示例演示如何异步执行计算工作。 该示例使用计算命令队列启动多个线程,并在执行 n 体重力模拟的 GPU 上计划计算工作。 每个线程对两个充满位置和速度数据的缓冲区进行作。 每次迭代时,计算着色器都会从一个缓冲区读取当前位置和速度数据,并将下一次迭代写入另一个缓冲区。 迭代完成后,计算着色器会交换哪个缓冲区是用于读取位置/速度数据的 SRV,这是 UAV 通过更改每个缓冲区上的资源状态来写入位置/速度更新。
谓词查询
D3D12PredicationQueries 示例演示了使用 DirectX 12 查询堆和谓词进行遮挡剔除。 本演练介绍了扩展 HelloConstBuffer 示例来处理谓词查询所需的其他代码。
使用 HLSL 5.1 动态索引
D3D12DynamicIndexing 示例演示了着色器模型 5.1(尤其是动态索引和未绑定数组)中提供的一些新的 HLSL 功能,每次使用动态选择的材料呈现相同的网格。 使用动态索引,着色器现在可以编制索引到数组中,而无需在编译时知道索引的值。 与未绑定数组结合使用时,这增加了着色器作者和艺术管道的另一个间接级别和灵活性。
间接绘图和 GPU 剔除
D3D12ExecuteIndirect 示例演示如何使用间接命令来绘制内容。 它还演示了如何在发出这些命令之前在计算着色器中的 GPU 上作这些命令。

Direct3D 12 编程指南

DirectX 高级学习视频教程

D3D12 引用 中的示例代码

工作示例