D3D12 代码演练

本部分介绍了示例方案的代码。 许多演练都详细介绍了以下内容,即添加到基本示例需要采取哪种编码技术以避免为每个场景重复基本组件代码。

有关最基本的组件,请参阅 创建基本 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 参考中的示例代码

有用的示例