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

99 lines
3.4 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.
# RHITexture
**命名空间**: `XCEngine::RHI`
**类型**: `class` (abstract)
**头文件**: `XCEngine/RHI/RHITexture.h`
**描述**: GPU 纹理资源抽象接口,用于管理 1D、2D、3D 纹理和立方体贴图等 GPU 资源。
## 概述
`RHITexture` 是 GPU 纹理资源的抽象接口,封装了 1D、2D、3D 纹理和立方体贴图等资源的创建、状态管理、查询等操作。通过 RHI 抽象层RHITexture 可在不同图形 APIDirectX 12、OpenGL之间无缝切换。
## 公共方法
| 方法 | 描述 |
|------|------|
| [`~RHITexture`](dtor.md) | 虚析构函数 |
| [`GetWidth`](get-width.md) | 获取纹理宽度 |
| [`GetHeight`](get-height.md) | 获取纹理高度 |
| [`GetDepth`](get-depth.md) | 获取纹理深度 |
| [`GetMipLevels`](get-mip-levels.md) | 获取 Mip 级别数量 |
| [`GetFormat`](get-format.md) | 获取纹理格式 |
| [`GetTextureType`](get-texture-type.md) | 获取纹理类型 |
| [`GetState`](get-state.md) | 获取资源状态 |
| [`SetState`](set-state.md) | 设置资源状态 |
| [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 |
| [`GetName`](get-name.md) | 获取资源名称 |
| [`SetName`](set-name.md) | 设置资源名称 |
| [`Shutdown`](shutdown.md) | 关闭并释放资源 |
## 纹理类型 (TextureType)
| 枚举值 | 描述 |
|--------|------|
| `TextureType::Texture1D` | 1D 纹理 |
| `TextureType::Texture2D` | 2D 纹理 |
| `TextureType::Texture2DArray` | 2D 纹理数组 |
| `TextureType::Texture3D` | 3D 纹理(体积纹理) |
| `TextureType::TextureCube` | 立方体贴图 |
| `TextureType::TextureCubeArray` | 立方体贴图数组 |
## 纹理格式 (Format)
| 格式 | 描述 |
|------|------|
| `Format::Unknown` | 未知格式 |
| `Format::R8_UNorm` | 单通道 8 位归一化 |
| `Format::R8G8_UNorm` | 双通道 8 位归一化 |
| `Format::R8G8B8A8_UNorm` | 四通道 8 位归一化 |
| `Format::R16G16B16A16_Float` | 四通道 16 位浮点 |
| `Format::R32G32B32A32_Float` | 四通道 32 位浮点 |
| `Format::R16_Float` | 单通道 16 位浮点 |
| `Format::R32_Float` | 单通道 32 位浮点 |
| `Format::D16_UNorm` | 16 位深度 |
| `Format::D24_UNorm_S8_UInt` | 24 位深度 + 8 位模板 |
| `Format::D32_Float` | 32 位深度 |
| `Format::BC1_UNorm` | BC1 压缩 (DXT1) |
| `Format::BC2_UNorm` | BC2 压缩 (DXT2/3) |
| `Format::BC3_UNorm` | BC3 压缩 (DXT4/5) |
| `Format::BC4_UNorm` | BC4 压缩 |
| `Format::BC5_UNorm` | BC5 压缩 |
| `Format::BC6H_UF16` | BC6H 压缩 (UF16) |
| `Format::BC7_UNorm` | BC7 高质量压缩 |
| `Format::R32G32B32A32_UInt` | 四通道 32 位无符号整数 |
| `Format::R32_UInt` | 单通道 32 位无符号整数 |
## 使用示例
```cpp
// 假设已通过 RHIDevice 创建了纹理
RHITexture* texture = device->CreateTexture(desc);
// 查询纹理属性
uint32_t width = texture->GetWidth();
uint32_t height = texture->GetHeight();
Format format = texture->GetFormat();
TextureType type = texture->GetTextureType();
// 设置资源状态
texture->SetState(ResourceStates::PixelShaderResource);
// 设置调试名称
texture->SetName("DiffuseMap_Main");
// 获取原生句柄(用于平台特定操作)
void* nativeHandle = texture->GetNativeHandle();
// 关闭并释放资源
texture->Shutdown();
```
## 相关文档
- [../rhi.md](../rhi.md) - RHI 模块总览
- [RHIDevice](../device/device.md) - 创建设备
- [RHIBuffer](../buffer/buffer.md) - 缓冲区资源