Files
XCEngine/docs/api/rhi/opengl/render-target-view/render-target-view.md

89 lines
2.4 KiB
Markdown
Raw Normal View History

# OpenGLRenderTargetView
**命名空间**: `XCEngine::RHI`
2026-03-20 02:35:45 +08:00
**描述**: OpenGL 渲染目标视图实现,用于将纹理绑定为渲染目标进行渲染输出。
## 类型定义
### RenderTargetType
```cpp
enum class RenderTargetType {
Texture2D, // 2D 纹理
Texture2DArray, // 2D 纹理数组
Texture3D, // 3D 纹理
TextureCube, // 立方体贴图
TextureCubeArray // 立方体贴图数组
};
```
### OpenGLRenderTargetViewDesc
```cpp
struct OpenGLRenderTargetViewDesc {
RenderTargetType type = RenderTargetType::Texture2D; // 渲染目标类型
int mipLevel = 0; // Mip 级别
int baseArraySlice = 0; // 数组起始索引
int arraySize = 1; // 数组大小
int layer = 0; // 层级(用于 3D 纹理)
uint32_t format = 0; // 格式
};
```
## 公共方法
| 方法 | 描述 |
|------|------|
2026-03-20 02:35:45 +08:00
| [`Initialize`](initialize.md) | 初始化渲染目标视图2 个重载) |
| [`InitializeCubemap`](initialize-cubemap.md) | 初始化立方体贴图渲染目标视图 |
| [`Shutdown`](shutdown.md) | 关闭渲染目标视图 |
2026-03-20 02:35:45 +08:00
| [`Bind`](bind.md) | 绑定渲染目标视图2 个重载) |
| [`Unbind`](unbind.md) | 解绑渲染目标视图 |
2026-03-20 02:35:45 +08:00
| [`Clear`](clear.md) | 清除2 个重载) |
| [`GetFramebuffer`](get-framebuffer.md) | 获取帧缓冲 |
| [`GetTexture`](get-texture.md) | 获取纹理 |
| [`GetMipLevel`](get-mip-level.md) | 获取 Mip 级别 |
| [`GetWidth`](get-size.md) | 获取宽度 |
2026-03-20 02:35:45 +08:00
| [`GetHeight`](get-height.md) | 获取高度 |
| [`BindFramebuffer`](bind-framebuffer.md) | 绑定帧缓冲 |
| [`UnbindFramebuffer`](unbind-framebuffer.md) | 解绑帧缓冲 |
2026-03-20 02:35:45 +08:00
## 使用示例
```cpp
#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();
}
```
## 相关文档
- [OpenGL 后端总览](../opengl.md)