5.2 KiB
5.2 KiB
D3D12CommandList
命名空间: XCEngine::RHI
继承自: RHICommandList
头文件: XCEngine/RHI/D3D12/D3D12CommandList.h
概述
D3D12CommandList 是 DirectX 12 命令列表的 RHI 实现,封装了 ID3D12GraphicsCommandList 接口。该类负责记录 GPU 命令,包括绘制调用、资源状态转换、渲染目标设置等。
主要功能
- 命令录制: 支持图形和计算命令的录制
- 资源状态管理: 维护资源状态映射表,跟踪资源转换
- 描述符管理: 管理 GPU 描述符堆和描述符表
- 状态设置: 设置管线状态、根签名、视口、裁剪矩形等
公共方法
使用示例
#include "XCEngine/RHI/D3D12/D3D12CommandList.h"
#include "XCEngine/RHI/D3D12/D3D12Device.h"
using namespace XCEngine::RHI;
// 创建命令列表
D3D12CommandList cmdList;
ID3D12Device* device = /* 获取设备 */;
// 初始化
if (!cmdList.Initialize(device, CommandQueueType::Direct)) {
return false;
}
// 重置并开始录制
cmdList.Reset();
// 设置渲染状态
cmdList.SetPipelineState(pipelineState);
cmdList.SetRootSignature(rootSignature);
cmdList.SetPrimitiveTopology(PrimitiveTopology::TriangleList);
cmdList.SetViewport(viewport);
cmdList.SetRenderTargets(1, renderTargets, depthStencil);
// 绑定资源
cmdList.SetVertexBuffer(0, vertexBuffer, 0, sizeof(Vertex));
cmdList.SetIndexBuffer(indexBuffer, 0, Format::R32_UINT);
// 绘制
cmdList.DrawIndexed(indexCount, 1, 0, 0, 0);
// 关闭命令列表
cmdList.Close();
相关文档
- D3D12 后端总览
- RHICommandList - 抽象命令列表接口