Skip to content

HelloWindow

D3D12HelloWindow 结构

  1. 构建渲染管线 LoadPipeline
    1. 开启Debug layer
    2. 创建dxgi工厂对象factory
    3. 根据预定标记决定是否使用wrap适配器,利用factory枚举对应适配器并创建Device
    4. 创建命令队列
      1. 创建命令队列描述符,指定行为标志、队列类型
      2. 使用device根据描述符创建队列
    5. 创建交换链
      1. 创建交换链描述符,指定缓冲区数量、宽高、颜色格式、缓冲区类型、交换方式和采样
      2. 根据描述符创建一个较旧版本的交换链
      3. 将交换链提升到需要的版本以应用新的特性
      4. 标记当前后台缓冲区的索引
    6. 创建描述符堆
    7. 创建RTV(渲染目标视图
    8. 创建Command Allocator
  2. 准备资源与同步顺序 LoadAsset
    1. 创建Command List
    2. 创建Fence和Event
  3. 渲染帧更新 OnRender
    1. 准备命令列表 PopulateCommandList
      1. 重置Command Allocator,Command List
      2. 资源屏障状态切换
      3. 通过描述符堆获取当前RTV
      4. 绘制
      5. 切回可渲染的状态并关闭Command List
    2. 等待GPU完成当前工作并准备下一帧资源 WaitForPreviousFrame
  4. 逻辑帧更新 OnUpdate
  5. 销毁 OnDestroy