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 上作这些命令。 |