Files
XCEngine/docs/api/rhi/opengl/command-list/command-list.md
ssdfasd 1cf744b755 refactor(docs): RHI模块文档重构 - 修复18处链接错误并新增RHIFramebuffer/RHIRenderPass文档
- 修复opengl/下13个文件对overview.md的错误引用,改为opengl.md
- 修复opengl/shader/下2处get-native-handle.md的错误路径引用
- 修复rhi.md中rhifactory路径错误
- 修复opengl.md中对d3d12.md的错误引用
- 修复opengl/README.md中的overview.md引用
- 新增RHIFramebuffer完整文档(7个文件)
- 新增RHIRenderPass完整文档(7个文件)
- 更新rhi.md总览页,添加RHIFramebuffer和RHIRenderPass分类
2026-03-26 01:29:00 +08:00

3.6 KiB
Raw Blame History

OpenGLCommandList

命名空间: XCEngine::RHI

描述: OpenGL 命令列表实现,继承自 RHICommandList。提供 OpenGL 图形 API 的命令录制与执行接口,支持底层 OpenGL 状态操作以及跨平台 RHI 抽象接口。

概述

OpenGLCommandList 是 XCEngine RHI渲染硬件接口层在 OpenGL 后端的实现类。它封装了 OpenGL 图形命令的调用,提供了两类接口:

  1. RHI 抽象接口:继承自 RHICommandList,提供跨后端一致性接口
  2. OpenGL 特有方法:底层逃逸接口,用于需要直接操作 OpenGL 状态的场景

公共方法

生命周期

方法 描述
Shutdown 关闭命令列表(占位实现)
Reset 重置命令列表(占位实现)
Close 关闭命令列表(占位实现)

清除操作

方法 描述
Clear 清除指定缓冲区
ClearColor 清除颜色缓冲区
ClearDepth 清除深度缓冲区
ClearStencil 清除模板缓冲区
ClearDepthStencil 清除深度和模板缓冲区
ClearRenderTarget 清除渲染目标

状态设置

方法 描述
SetPipelineState 设置管线状态
SetVertexBuffer 设置顶点缓冲区
SetVertexBuffers 批量设置顶点缓冲区
SetIndexBuffer 设置索引缓冲区
SetRenderTargets 设置渲染目标
SetDepthStencilState 设置深度模板状态
SetStencilRef 设置模板引用值
SetBlendState 设置混合状态
SetBlendFactor 设置混合因子颜色
SetPrimitiveTopology 设置图元拓扑

视口与裁剪

方法 描述
SetViewport 设置视口
SetViewports 批量设置视口
SetScissorRect 设置裁剪矩形
SetScissorRects 批量设置裁剪矩形

绘制

方法 描述
Draw 绘制非索引图元
DrawIndexed 绘制索引图元

计算

方法 描述
Dispatch 分发计算任务
CopyResource 复制资源(占位实现)
TransitionBarrier 资源状态转换(占位实现)

OpenGL 特有方法

方法 描述
OpenGLMethods 底层 OpenGL 逃逸接口

使用示例

#include "XCEngine/RHI/OpenGL/OpenGLCommandList.h"

using namespace XCEngine::RHI;

// 创建命令列表
OpenGLCommandList* cmdList = new OpenGLCommandList();

// 清除颜色缓冲区
cmdList->ClearColor(0.0f, 0.0f, 0.0f, 1.0f);

// 设置视口
Viewport viewport;
viewport.topLeftX = 0.0f;
viewport.topLeftY = 0.0f;
viewport.width = 800.0f;
viewport.height = 600.0f;
viewport.minDepth = 0.0f;
viewport.maxDepth = 1.0f;
cmdList->SetViewport(viewport);

// 绑定 shader program
cmdList->UseShader(shaderProgram);

// 绘制
cmdList->Draw(3, 1, 0, 0);

delete cmdList;

相关文档