- 新增32个方法文档(D3D12Buffer 13个,D3D12Texture 12个,D3D12SwapChain 6个) - 修复11处跨模块引用错误(rhi-device.md, rhi-texture.md等路径错误) - 清理d3d12-overview.md移除不存在的类引用 - 修复D3D12Device/D3D12CommandList/D3D12CommandQueue方法列表 - D3D12模块现无broken links
2.9 KiB
2.9 KiB
D3D12CommandList
命名空间: XCEngine::RHI
类型: class
头文件: XCEngine/RHI/D3D12/D3D12CommandList.h
描述: DirectX 12 命令列表封装类,负责录制图形和计算命令
概述
D3D12CommandList 是 DirectX 12 命令列表的封装类,继承自 RHICommandList 接口。它负责录制所有图形渲染命令,包括状态设置、绘制调用、资源状态转换、复制操作等。D3D12CommandList 支持命令列表重置和关闭以实现命令重用,内部维护资源状态跟踪以优化状态转换屏障。
该类是渲染管线的核心,负责将所有渲染操作命令化并提交到 GPU 执行。
公共方法
| 方法 | 描述 |
|---|---|
D3D12CommandList() |
默认构造函数 |
~D3D12CommandList() |
虚析构函数 |
| Initialize | 初始化命令列表 |
| Shutdown | 关闭命令列表 |
| Reset | 重置命令列表 |
| Close | 关闭命令列表 |
| TransitionBarrier | 设置资源转换屏障 |
| SetRenderTargets | 设置渲染目标 |
| Draw | 绘制调用 |
| DrawIndexed | 绘制索引图元 |
| ClearRenderTarget | 清除渲染目标 |
| ClearDepthStencil | 清除深度模板 |
| CopyResource | 复制资源 |
| Dispatch | 分发计算任务 |
使用示例
#include <XCEngine/RHI/D3D12/D3D12CommandList.h>
using namespace XCEngine::RHI;
// 创建命令列表
D3D12CommandList commandList;
commandList.Initialize(device, CommandQueueType::Direct);
// 开始录制命令
commandList.Reset();
// 设置渲染目标
commandList.SetRenderTargets(1, &renderTargetView, nullptr);
float clearColor[] = { 0.0f, 0.0f, 0.0f, 1.0f };
commandList.ClearRenderTarget(renderTargetView, clearColor);
// 设置视口
Viewport viewport = { 0.0f, 0.0f, 1280.0f, 720.0f, 0.0f, 1.0f };
commandList.SetViewport(viewport);
// 设置图元拓扑
commandList.SetPrimitiveTopology(PrimitiveTopology::TriangleList);
// 绑定顶点缓冲区
commandList.SetVertexBuffer(0, vertexBuffer, 0, sizeof(Vertex));
// 绑定索引缓冲区
commandList.SetIndexBuffer(indexBuffer, 0, Format::R32_UInt);
// 绑定管道状态
commandList.SetPipelineState(pipelineState);
// 绘制
commandList.DrawIndexed(indexCount, 1, 0, 0, 0);
// 关闭命令列表
commandList.Close();
// 提交到命令队列
commandQueue->ExecuteCommandListsInternal(1, &cmdList);
相关文档
- D3D12 模块概览 - D3D12 模块总览
- RHICommandList - RHI 命令列表基类
- D3D12CommandQueue - 命令队列