Files
XCEngine/docs/api/rhi/opengl/device/create-texture.md
2026-03-20 02:35:45 +08:00

82 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OpenGLDevice::CreateTexture
```cpp
RHITexture* CreateTexture(const TextureDesc& desc) override
```
创建 OpenGL 纹理对象。
## 详细描述
根据 `TextureDesc` 创建一个 OpenGL 纹理对象。纹理类型映射:
| TextureDesc.textureType | OpenGLTextureType |
|------------------------|-------------------|
| 0 | Texture1D |
| 1 (默认) | Texture2D |
| 2 | Texture3D |
| 3 | TextureCube |
### 纹理格式
当前实现固定使用 `RGBA8` (RGBA, 8 bits per channel) 格式。
### 纹理参数
| 参数 | 值 |
|------|-----|
| 格式 | RGBA8 |
| Mipmap | 根据 `desc.mipLevels` |
| 类型 | GL_UNSIGNED_BYTE |
## 参数
- `desc` - 纹理描述符
### TextureDesc 字段
| 字段 | 描述 |
|------|------|
| `textureType` | 纹理类型 (0=1D, 1=2D, 2=3D, 3=Cube) |
| `width` | 纹理宽度 |
| `height` | 纹理高度 |
| `depth` | 纹理深度(用于 3D 纹理) |
| `mipLevels` | Mipmap 级别数量 |
## 返回值
`RHITexture*` - 创建的纹理指针
## 注意事项
- 当前实现创建的纹理初始数据为 `nullptr`(空纹理)
- 返回的纹理对象归调用者所有,需自行管理生命周期
- 1D 纹理使用 `height=1`3D 纹理使用 `depth` 参数
## 示例
```cpp
// 创建 2D 纹理
TextureDesc tex2dDesc;
tex2dDesc.textureType = 1; // Texture2D
tex2dDesc.width = 1024;
tex2dDesc.height = 1024;
tex2dDesc.mipLevels = 1;
RHITexture* tex2d = device.CreateTexture(tex2dDesc);
// 创建立方体纹理
TextureDesc texCubeDesc;
texCubeDesc.textureType = 3; // TextureCube
texCubeDesc.width = 512;
texCubeDesc.height = 512;
texCubeDesc.mipLevels = 1;
RHITexture* texCube = device.CreateTexture(texCubeDesc);
```
## 相关文档
- [OpenGLDevice](device.md) - 类总览
- [OpenGLTexture](../opengl-texture.md) - OpenGL 纹理实现