- 修复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分类
3.6 KiB
3.6 KiB
OpenGLCommandList
命名空间: XCEngine::RHI
描述: OpenGL 命令列表实现,继承自 RHICommandList。提供 OpenGL 图形 API 的命令录制与执行接口,支持底层 OpenGL 状态操作以及跨平台 RHI 抽象接口。
概述
OpenGLCommandList 是 XCEngine RHI(渲染硬件接口)层在 OpenGL 后端的实现类。它封装了 OpenGL 图形命令的调用,提供了两类接口:
- RHI 抽象接口:继承自
RHICommandList,提供跨后端一致性接口 - 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;
相关文档
- OpenGL 后端总览
- RHICommandList - 抽象命令列表接口