[toc]

# 主要步骤

# 初始化

  • D3D12CreateDevice 函数创建 ID3D12Device 接口实例。
  • 创建一个 ID3D12Fence 对象,并查询描述符大小。
  • 检测用户设备对 4x MSAA 质量级别的支持情况。
  • 依次创建命令队列、命令列表分配器和主命令列表。
  • 描述并创建交换链。
  • 创建应用程序所需要的描述符堆。
  • 调整后台缓冲区的大小,并为它创建渲染目标视图。
  • 创建深度 / 模板缓冲区及与之关联的深度 / 模板视图。
  • 创建视口 (viewport) 和裁剪矩形 (scissor rectangle)。

# Chapter4 渲染循环

  • 等待 GPU 关联的命令列表执行完毕
  • 重置列表的分配器
  • 从命令列表中获取分配器 (复用分配器)
  • 将资源状态从呈现状态转换为渲染状态
  • 设置视口矩阵和裁剪矩阵
  • 清除后台缓冲区和深度缓冲区
  • 指定当前命令列表要渲染的目标缓冲区
  • 将资源状态从渲染状态转换为呈现状态
  • 将命令列表从记录状态转换为关闭状态
  • 获得设置完毕的命令列表
  • 调用命令队列的 ExecuteCommandLists 将命令列表加入命令队列
  • 交换前后台缓冲区
  • 等待此帧的命令结束