- 修复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分类
2.4 KiB
2.4 KiB
OpenGLRenderTargetView
命名空间: XCEngine::RHI
描述: OpenGL 渲染目标视图实现,用于将纹理绑定为渲染目标进行渲染输出。
类型定义
RenderTargetType
enum class RenderTargetType {
Texture2D, // 2D 纹理
Texture2DArray, // 2D 纹理数组
Texture3D, // 3D 纹理
TextureCube, // 立方体贴图
TextureCubeArray // 立方体贴图数组
};
OpenGLRenderTargetViewDesc
struct OpenGLRenderTargetViewDesc {
RenderTargetType type = RenderTargetType::Texture2D; // 渲染目标类型
int mipLevel = 0; // Mip 级别
int baseArraySlice = 0; // 数组起始索引
int arraySize = 1; // 数组大小
int layer = 0; // 层级(用于 3D 纹理)
uint32_t format = 0; // 格式
};
公共方法
| 方法 | 描述 |
|---|---|
Initialize |
初始化渲染目标视图(2 个重载) |
InitializeCubemap |
初始化立方体贴图渲染目标视图 |
Shutdown |
关闭渲染目标视图 |
Bind |
绑定渲染目标视图(2 个重载) |
Unbind |
解绑渲染目标视图 |
Clear |
清除(2 个重载) |
GetFramebuffer |
获取帧缓冲 |
GetTexture |
获取纹理 |
GetMipLevel |
获取 Mip 级别 |
GetWidth |
获取宽度 |
GetHeight |
获取高度 |
BindFramebuffer |
绑定帧缓冲 |
UnbindFramebuffer |
解绑帧缓冲 |
使用示例
#include "XCEngine/RHI/OpenGL/OpenGLRenderTargetView.h"
void RenderToTexture() {
OpenGLRenderTargetView rtv;
// 初始化为 2D 纹理渲染目标
if (rtv.Initialize(textureID, 0)) {
rtv.Bind();
rtv.Clear(0.0f, 0.0f, 0.0f, 1.0f);
// 执行渲染...
rtv.Unbind();
}
rtv.Shutdown();
}
void RenderToCubemap() {
OpenGLRenderTargetView rtv;
// 初始化为立方体贴图的第一面
if (rtv.InitializeCubemap(cubemapID, 0, 0)) {
rtv.Bind();
rtv.Clear(0.0f, 0.0f, 0.0f, 1.0f);
// 执行渲染...
rtv.Unbind();
}
rtv.Shutdown();
}