HelloD3D12 DirectX® 12 示例

HelloD3D12 DirectX® 12 示例

HelloD3D12 是一个小型、入门级的 Direct3D® 12 示例,展示了如何设置窗口并渲染一个带有纹理的四边形,包括正确的上传处理、多帧排队和常量缓冲区。

在 GitHub 上查看 HelloD3D12 示例

共有三个复杂度递增的示例。 

公共功能,如窗口创建、演示处理,包含在 hellod3d12\src\D3D12Sample.cpp 中。 

其余部分是次要的脚手架; ImageIO 包含一些辅助类,用于使用 WIC 从磁盘加载图像,Window 包含一个创建 Win32 窗口的类。

示例是

  • D3D12Quad:渲染一个四边形。这是最基本的示例。
  • D3D12AnimatedQuad:使用常量缓冲区为四边形添加动画。
  • D3D12TexturedQuad:为带动画的四边形示例添加纹理。

关注点

  • 应用程序会排队多帧。为了保护每帧的命令列表和其他资源,会创建围栏。提交完一帧的命令列表后,会发出围栏信号,然后使用下一个命令列表。
  • 纹理和网格数据是使用上传堆上传的。这发生在初始化期间,并展示了如何将数据传输到 GPU。理想情况下,这应该在 copy 队列上运行,但为了简单起见,它在通用的 graphics 队列上运行。
  • 常量缓冲区放置在 upload 堆中。如果缓冲区只读取一次,将其放置在上传堆中是最佳选择。
  • 障碍物尽可能具体并分组。一次过渡多个资源比使用多个障碍物更快,因为 GPU 需要刷新缓存,如果多个障碍物分组,缓存只刷新一次。
  • 应用程序为最常更改的常量缓冲区使用根签名槽。
  • DEBUG 配置将自动启用调试层来验证 API 使用。请检查源代码以获取详细信息,因为这需要安装图形工具。

要求

  • 支持 Direct3D® 12 的显卡。
    • 例如,任何 GCN 架构的 AMD GPU。
  • Windows® 10(推荐 64 位)。
  • Visual Studio® 2015,并安装了 Visual C++ 和 Windows® 10 SDK。

您可能还喜欢

© . This site is unofficial and not affiliated with AMD.