Files
XCEngine/docs/api/rhi/shader/shader.md
ssdfasd 8df04c120f docs: 更新 API 文档 - 多模块修复和完善
- audio: 更新 audio-system 方法文档
- components: 新增 audio-listener/audio-source 组件方法文档,新增 remove-component 方法
- core: 更新 filewriter, types 文档
- math: 更新 box 方法文档
- memory: 更新 proxy-allocator 文档
- resources: 更新 loader 和 texture 文档
- rhi: 更新 opengl 设备、shader、swap-chain 文档
- threading: 更新 mutex 和 task-system 文档
2026-03-26 01:58:45 +08:00

81 lines
2.3 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.
# RHIShader
**命名空间**: `XCEngine::RHI`
**类型**: `class` (abstract)
**头文件**: `XCEngine/RHI/RHIShader.h`
**描述**: 着色器接口,管理 GPU 着色器程序
## 概述
`RHIShader` 是 XCEngine RHI 模块中的抽象着色器接口类,定义了 GPU 着色器程序的标准 API。该类是所有具体着色器实现如 D3D12Shader、OpenGLShader 等)的基类,提供了统一的着色器编译和元数据查询接口。
设计目的:
- 提供跨平台的着色器抽象
- 统一着色器编译和资源管理
- 简化渲染管线中着色器的使用
## 公共方法
| 方法 | 描述 |
|------|------|
| [`CompileFromFile`](compile-from-file.md) | 从文件编译着色器 |
| [`Compile`](compile.md) | 从内存数据编译着色器 |
| [`GetType`](get-type.md) | 获取着色器类型 |
| [`IsValid`](is-valid.md) | 检查着色器是否有效 |
| [`GetNativeHandle`](get-native-handle.md) | 获取原生句柄 |
| [`Shutdown`](shutdown.md) | 释放着色器资源 |
## 公共属性
| 属性 | 类型 | 描述 |
|------|------|------|
| `ShaderType` | `enum` | 着色器类型枚举 |
### ShaderType 枚举值
| 枚举值 | 描述 |
|--------|------|
| `ShaderType::Vertex` | 顶点着色器 |
| `ShaderType::Fragment` | 片元着色器 |
| `ShaderType::Geometry` | 几何着色器 |
| `ShaderType::Compute` | 计算着色器 |
| `ShaderType::TessControl` | 曲面细分控制着色器 |
| `ShaderType::TessEvaluation` | 曲面细分评估着色器 |
| `ShaderType::Hull` | Hull 着色器 (D3D12) |
| `ShaderType::Domain` | Domain 着色器 (D3D12) |
| `ShaderType::Amplification` | 放大着色器 (Mesh Shader) |
| `ShaderType::Mesh` | Mesh 着色器 |
| `ShaderType::Library` | 着色器库 |
## 使用示例
```cpp
#include "XCEngine/RHI/RHIShader.h"
#include "XCEngine/RHI/RHIDevice.h"
using namespace XCEngine::RHI;
// 通过 RHIDevice 创建并编译着色器
ShaderCompileDesc vsDesc;
vsDesc.fileName = L"shaders/vertex.cso";
vsDesc.entryPoint = "VSMain";
vsDesc.profile = "vs_5_0";
RHIShader* vertexShader = device->CreateShader(vsDesc);
if (vertexShader && vertexShader->IsValid()) {
// 渲染...
}
if (vertexShader) {
vertexShader->Shutdown();
delete vertexShader;
}
```
## 相关文档
- [RHI 模块总览](../rhi.md) - RHI 模块总览
- [RHIDevice](../device/device.md) - 创建设备