docs: update resources API docs

This commit is contained in:
2026-03-20 02:35:35 +08:00
parent fd792b7df1
commit ea756c0177
314 changed files with 9439 additions and 1360 deletions

View File

@@ -11,7 +11,9 @@ void AddAttribute(const ShaderAttribute& attribute)
**返回:**
**复杂度** O(1)
**线程安全** ❌ 非线程安全
**复杂度:** Amortized O(1)
**示例:**

View File

@@ -11,7 +11,9 @@ void AddUniform(const ShaderUniform& uniform)
**返回:**
**复杂度** O(1)
**线程安全** ❌ 非线程安全
**复杂度:** Amortized O(1)
**示例:**

View File

@@ -0,0 +1,25 @@
# Shader::Shader
```cpp
Shader()
```
默认构造函数,创建一个无效的 Shader 对象。
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
Shader vs;
vs.SetShaderType(ShaderType::Vertex);
vs.SetShaderLanguage(ShaderLanguage::GLSL);
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,27 @@
# Shader::~Shader
```cpp
virtual ~Shader()
```
析构函数,释放 Shader 对象持有的所有资源。
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(1) - 平凡析构函数
**示例:**
```cpp
{
Shader vs;
vs.SetShaderType(ShaderType::Vertex);
// ...
} // vs 超出作用域,自动调用析构函数
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,27 @@
# Shader::GetAttributes
```cpp
const Containers::Array<ShaderAttribute>& GetAttributes() const
```
获取着色器的顶点属性列表。
**返回:** `const Containers::Array<ShaderAttribute>&` - 属性列表的引用
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
const Containers::Array<ShaderAttribute>& attrs = shader->GetAttributes();
for (const auto& attr : attrs) {
// 处理每个 attribute
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,24 @@
# Shader::GetCompiledBinary
```cpp
const Containers::Array<Core::uint8>& GetCompiledBinary() const
```
获取编译后的着色器二进制数据。
**返回:** `const Containers::Array<Core::uint8>&` - 编译后二进制数据的引用
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
const Containers::Array<Core::uint8>& binary = shader->GetCompiledBinary();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,25 @@
# Shader::GetGUID
```cpp
ResourceGUID GetGUID() const override
```
获取着色器资源的全局唯一标识符。
**返回:** `ResourceGUID` - 全局唯一标识符
**线程安全:** ✅ 线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
ResourceGUID guid = shader->GetGUID();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [IResource](../iresource/iresource.md) - 资源基类

View File

@@ -0,0 +1,25 @@
# Shader::GetMemorySize
```cpp
size_t GetMemorySize() const override
```
获取着色器资源的内存大小。
**返回:** `size_t` - 内存大小(字节)
**线程安全:** ✅ 线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
size_t memSize = shader->GetMemorySize();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [IResource](../iresource/iresource.md) - 资源基类

View File

@@ -0,0 +1,25 @@
# Shader::GetName
```cpp
const Containers::String& GetName() const override
```
获取着色器资源名称。
**返回:** `const Containers::String&` - 着色器名称的引用
**线程安全:** ✅ 线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
Containers::String name = shader->GetName();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [IResource](../iresource/iresource.md) - 资源基类

View File

@@ -0,0 +1,25 @@
# Shader::GetPath
```cpp
const Containers::String& GetPath() const override
```
获取着色器资源路径。
**返回:** `const Containers::String&` - 着色器路径的引用
**线程安全:** ✅ 线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
Containers::String path = shader->GetPath();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [IResource](../iresource/iresource.md) - 资源基类

View File

@@ -0,0 +1,28 @@
# Shader::GetRHIResource
```cpp
class IRHIShader* GetRHIResource() const
```
获取 RHI 着色器资源指针。
**返回:** `class IRHIShader*` - RHI 着色器资源指针,可能为 `nullptr`
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
class IRHIShader* rhiShader = shader->GetRHIResource();
if (rhiShader != nullptr) {
// RHI 着色器已设置
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [RHIShader](../../rhi/shader/shader.md) - RHI 着色器接口

View File

@@ -0,0 +1,27 @@
# Shader::GetShaderLanguage
```cpp
ShaderLanguage GetShaderLanguage() const
```
获取着色器语言。
**返回:** `ShaderLanguage` - 着色器语言枚举值
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
ShaderLanguage lang = shader->GetShaderLanguage();
if (lang == ShaderLanguage::GLSL) {
// 这是 GLSL 着色器
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,27 @@
# Shader::GetShaderType
```cpp
ShaderType GetShaderType() const
```
获取着色器类型。
**返回:** `ShaderType` - 着色器类型枚举值
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
ShaderType type = shader->GetShaderType();
if (type == ShaderType::Vertex) {
// 这是一个顶点着色器
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,24 @@
# Shader::GetSourceCode
```cpp
const Containers::String& GetSourceCode() const
```
获取着色器源码。
**返回:** `const Containers::String&` - 着色器源码的引用
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
const Containers::String& source = shader->GetSourceCode();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,27 @@
# Shader::GetType
```cpp
ResourceType GetType() const override
```
返回资源类型为 `ResourceType::Shader`
**返回:** `ResourceType` - 资源类型枚举值 `ResourceType::Shader`
**线程安全:** ✅ 线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
if (shader->GetType() == ResourceType::Shader) {
// 这是一个着色器资源
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [IResource](../iresource/iresource.md) - 资源基类

View File

@@ -0,0 +1,27 @@
# Shader::GetUniforms
```cpp
const Containers::Array<ShaderUniform>& GetUniforms() const
```
获取着色器的 Uniform 变量列表。
**返回:** `const Containers::Array<ShaderUniform>&` - Uniform 列表的引用
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
const Containers::Array<ShaderUniform>& uniforms = shader->GetUniforms();
for (const auto& uniform : uniforms) {
// 处理每个 uniform
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,29 @@
# Shader::IsValid
```cpp
bool IsValid() const override
```
检查着色器资源是否有效。
**返回:** `bool` - 资源有效返回 `true`,否则返回 `false`
**线程安全:** ✅ 线程安全
**复杂度:** O(1)
**示例:**
```cpp
ResourceHandle<Shader> shader = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
if (shader->IsValid()) {
// 着色器资源有效
} else {
// 着色器资源无效
}
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [IResource](../iresource/iresource.md) - 资源基类

View File

@@ -0,0 +1,34 @@
# Shader::Release
```cpp
void Release()
```
释放着色器持有的所有资源。
此方法继承自 `IResource` 接口。调用后:
- 清空源码字符串 (`m_sourceCode`)
- 清空编译后的二进制数据 (`m_compiledBinary`)
- 清空 Uniform 列表 (`m_uniforms`)
- 清空 Attribute 列表 (`m_attributes`)
- 释放 RHI 着色器资源指针 (`m_rhiResource`)
-`m_isValid` 标记为 `false`
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(n) - 取决于列表中元素数量
**示例:**
```cpp
// 使用完 shader 后释放
ResourceHandle<Shader> vs = ResourceManager::Get().Load<Shader>("shaders/vertex.glsl");
// ... 使用着色器 ...
vs->Release();
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,28 @@
# Shader::SetCompiledBinary
```cpp
void SetCompiledBinary(const Containers::Array<Core::uint8>& binary)
```
设置编译后的着色器二进制数据。
**参数:**
- `binary` - 编译后的二进制数据数组
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(n) - 复制二进制数据
**示例:**
```cpp
// 假设 compiler 是外部着色器编译器
Containers::Array<Core::uint8> compiledSpirv = compiler.Compile(sourceCode);
shader.SetCompiledBinary(compiledSpirv);
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,34 @@
# Shader::SetRHIResource
```cpp
void SetRHIResource(class IRHIShader* resource)
```
设置 RHI 着色器资源指针。
**参数:**
- `resource` - RHI 着色器资源指针
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
// 创建 RHI 着色器资源
RHIShaderDesc desc;
desc.type = RHIShaderType::Vertex;
desc.binary = compiledBinary;
class IRHIShader* rhiShader = RHIDevice::Get().CreateShader(desc);
// 设置到 Shader 对象
shader.SetRHIResource(rhiShader);
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览
- [RHIShader](../../rhi/shader/shader.md) - RHI 着色器接口

View File

@@ -0,0 +1,28 @@
# Shader::SetShaderLanguage
```cpp
void SetShaderLanguage(ShaderLanguage lang)
```
设置着色器语言。
**参数:**
- `lang` - 着色器语言枚举值
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
Shader vs;
vs.SetShaderLanguage(ShaderLanguage::GLSL);
vs.SetShaderLanguage(ShaderLanguage::HLSL);
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,28 @@
# Shader::SetShaderType
```cpp
void SetShaderType(ShaderType type)
```
设置着色器类型。
**参数:**
- `type` - 着色器类型枚举值
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(1)
**示例:**
```cpp
Shader vs;
vs.SetShaderType(ShaderType::Vertex);
vs.SetShaderType(ShaderType::Fragment);
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -0,0 +1,35 @@
# Shader::SetSourceCode
```cpp
void SetSourceCode(const Containers::String& source)
```
设置着色器源码。
**参数:**
- `source` - 着色器源码字符串
**返回:**
**线程安全:** ❌ 非线程安全
**复杂度:** O(n) - 复制源码字符串
**示例:**
```cpp
Shader vs;
vs.SetShaderType(ShaderType::Vertex);
vs.SetShaderLanguage(ShaderLanguage::GLSL);
vs.SetSourceCode(R"(
#version 450
layout(location = 0) in vec3 aPosition;
void main() {
gl_Position = vec4(aPosition, 1.0);
}
)");
```
## 相关文档
- [Shader 总览](shader.md) - 返回类总览

View File

@@ -4,6 +4,8 @@
**类型**: `class`
**头文件**: `XCEngine/Resources/Shader.h`
**描述**: 着色器资源类,管理着色器源码、编译后的二进制和 uniform/attribute 信息。
## 概述
@@ -71,17 +73,27 @@ Uniform 变量描述。
| 方法 | 描述 |
|------|------|
| `Shader()` | 默认构造函数 |
| `virtual ~Shader()` | 析构函数 |
| `ResourceType GetType() const` | 返回 `ResourceType::Shader` |
| `const Containers::String& GetName() const` | 获取着色器名称 |
| `const Containers::String& GetPath() const` | 获取着色器路径 |
| `ResourceGUID GetGUID() const` | 获取全局唯一标识符 |
| `bool IsValid() const` | 检查着色器是否有效 |
| `size_t GetMemorySize() const` | 获取内存大小 |
| `void Release()` | 释放着色器引用 |
| `void Release()` | 释放着色器资源 |
## 实现说明
### Release 详细说明
**注意**: `ShaderLoader::DetectShaderType()` 对于非标准扩展名始终返回 `ShaderType::Fragment``ShaderLoader::ParseShaderSource()` 为 stub始终返回 true。
`Release()` 方法释放 Shader 实例持有的所有资源,包括:
- 清空源码字符串 (`m_sourceCode`)
- 清空编译后的二进制数据 (`m_compiledBinary`)
- 清空 Uniform 列表 (`m_uniforms`)
- 清空 Attribute 列表 (`m_attributes`)
- 释放 RHI 着色器资源指针 (`m_rhiResource`)
-`m_isValid` 标记为 `false`
调用此方法后Shader 对象回到无效状态,可被 ResourceManager 回收。
### 类型与语言