Files
XCEngine/docs/api/rhi/command-list/command-list.md

68 lines
2.7 KiB
Markdown
Raw Normal View History

# RHICommandList
**命名空间**: `XCEngine::RHI`
**类型**: `class` (abstract)
2026-03-20 02:35:45 +08:00
**头文件**: `XCEngine/RHI/RHICommandList.h`
**描述**: GPU 命令列表抽象接口,用于录制和执行 GPU 渲染命令
## 概述
`RHICommandList` 是渲染硬件接口RHI层提供的抽象命令列表类用于录制 GPU 命令并提交执行。该类是纯虚接口,具体实现由各图形 APID3D12、Vulkan 等)提供。
主要功能包括:
- 状态设置(管线、视口、裁剪、渲染目标等)
- 资源绑定(顶点缓冲、索引缓冲等)
- 绘制调用Draw、DrawIndexed
- 资源操作(复制、转换状态)
- 计算着色器分发
## 公共方法
| 方法 | 描述 |
|------|------|
2026-03-20 02:35:45 +08:00
| [`Shutdown`](shutdown.md) | 关闭命令列表并释放资源 |
| [`Reset`](reset.md) | 重置命令列表 |
| [`Close`](close.md) | 关闭命令列表 |
| [`TransitionBarrier`](transition-barrier.md) | 资源状态转换 |
| [`SetPipelineState`](set-pipeline-state.md) | 设置管线状态 |
| [`SetPrimitiveTopology`](set-primitive-topology.md) | 设置图元拓扑 |
| [`SetViewport`](set-viewport.md) | 设置视口 |
| [`SetViewports`](set-viewports.md) | 设置多个视口 |
| [`SetScissorRect`](set-scissor-rect.md) | 设置裁剪矩形 |
| [`SetScissorRects`](set-scissor-rects.md) | 设置多个裁剪矩形 |
| [`SetRenderTargets`](set-render-targets.md) | 设置渲染目标 |
| [`SetDepthStencilState`](set-depth-stencil-state.md) | 设置深度模板状态 |
2026-03-20 02:35:45 +08:00
| [`SetStencilRef`](set-stencil-ref.md) | 设置模板参考值 |
| [`SetBlendState`](set-blend-state.md) | 设置混合状态 |
| [`SetBlendFactor`](set-blend-factor.md) | 设置混合因子 |
| [`SetVertexBuffer`](set-vertex-buffer.md) | 设置顶点缓冲 |
| [`SetVertexBuffers`](set-vertex-buffers.md) | 设置多个顶点缓冲 |
| [`SetIndexBuffer`](set-index-buffer.md) | 设置索引缓冲 |
| [`Draw`](draw.md) | 绘制 |
| [`DrawIndexed`](draw-indexed.md) | 索引绘制 |
| [`Clear`](clear.md) | 清除 |
| [`ClearRenderTarget`](clear-render-target.md) | 清除渲染目标 |
| [`ClearDepthStencil`](clear-depth-stencil.md) | 清除深度模板 |
| [`CopyResource`](copy-resource.md) | 复制资源 |
| [`Dispatch`](dispatch.md) | 分发计算任务 |
## 使用示例
```cpp
commandList->Reset();
commandList->SetPipelineState(pipelineState);
commandList->SetPrimitiveTopology(PrimitiveTopology::TriangleList);
commandList->SetViewport(viewport);
commandList->SetRenderTargets(1, &renderTarget, depthStencil);
commandList->DrawIndexed(indexCount, 1, 0, 0, 0);
commandList->Close();
commandQueue->ExecuteCommandLists(1, (void**)&commandList);
```
## 相关文档
2026-03-20 02:35:45 +08:00
- [RHI 模块总览](../rhi.md) - RHI 模块总览
- [RHICommandQueue](../command-queue/command-queue.md) - 命令队列