docs: update resources API docs
This commit is contained in:
@@ -11,7 +11,9 @@ void AddAttribute(const ShaderAttribute& attribute)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(1)
|
||||
**线程安全:** ❌ 非线程安全
|
||||
|
||||
**复杂度:** Amortized O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
|
||||
@@ -11,7 +11,9 @@ void AddUniform(const ShaderUniform& uniform)
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**复杂度:** O(1)
|
||||
**线程安全:** ❌ 非线程安全
|
||||
|
||||
**复杂度:** Amortized O(1)
|
||||
|
||||
**示例:**
|
||||
|
||||
|
||||
25
docs/api/resources/shader/constructor.md
Normal file
25
docs/api/resources/shader/constructor.md
Normal 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) - 返回类总览
|
||||
27
docs/api/resources/shader/destructor.md
Normal file
27
docs/api/resources/shader/destructor.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Shader::~Shader
|
||||
|
||||
```cpp
|
||||
virtual ~Shader()
|
||||
```
|
||||
|
||||
析构函数,释放 Shader 对象持有的所有资源。
|
||||
|
||||
**返回:** 无
|
||||
|
||||
**线程安全:** ❌ 非线程安全
|
||||
|
||||
**复杂度:** O(1) - 平凡析构函数
|
||||
|
||||
**示例:**
|
||||
|
||||
```cpp
|
||||
{
|
||||
Shader vs;
|
||||
vs.SetShaderType(ShaderType::Vertex);
|
||||
// ...
|
||||
} // vs 超出作用域,自动调用析构函数
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Shader 总览](shader.md) - 返回类总览
|
||||
27
docs/api/resources/shader/getattributes.md
Normal file
27
docs/api/resources/shader/getattributes.md
Normal 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) - 返回类总览
|
||||
24
docs/api/resources/shader/getcompiledbinary.md
Normal file
24
docs/api/resources/shader/getcompiledbinary.md
Normal 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) - 返回类总览
|
||||
25
docs/api/resources/shader/getguid.md
Normal file
25
docs/api/resources/shader/getguid.md
Normal 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) - 资源基类
|
||||
25
docs/api/resources/shader/getmemorysize.md
Normal file
25
docs/api/resources/shader/getmemorysize.md
Normal 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) - 资源基类
|
||||
25
docs/api/resources/shader/getname.md
Normal file
25
docs/api/resources/shader/getname.md
Normal 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) - 资源基类
|
||||
25
docs/api/resources/shader/getpath.md
Normal file
25
docs/api/resources/shader/getpath.md
Normal 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) - 资源基类
|
||||
28
docs/api/resources/shader/getrhi.md
Normal file
28
docs/api/resources/shader/getrhi.md
Normal 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 着色器接口
|
||||
27
docs/api/resources/shader/getshaderlanguage.md
Normal file
27
docs/api/resources/shader/getshaderlanguage.md
Normal 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) - 返回类总览
|
||||
27
docs/api/resources/shader/getshadertype.md
Normal file
27
docs/api/resources/shader/getshadertype.md
Normal 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) - 返回类总览
|
||||
24
docs/api/resources/shader/getsourcecode.md
Normal file
24
docs/api/resources/shader/getsourcecode.md
Normal 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) - 返回类总览
|
||||
27
docs/api/resources/shader/gettype.md
Normal file
27
docs/api/resources/shader/gettype.md
Normal 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) - 资源基类
|
||||
27
docs/api/resources/shader/getuniforms.md
Normal file
27
docs/api/resources/shader/getuniforms.md
Normal 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) - 返回类总览
|
||||
29
docs/api/resources/shader/isvalid.md
Normal file
29
docs/api/resources/shader/isvalid.md
Normal 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) - 资源基类
|
||||
34
docs/api/resources/shader/release.md
Normal file
34
docs/api/resources/shader/release.md
Normal 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) - 返回类总览
|
||||
28
docs/api/resources/shader/setbinary.md
Normal file
28
docs/api/resources/shader/setbinary.md
Normal 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) - 返回类总览
|
||||
34
docs/api/resources/shader/setrhi.md
Normal file
34
docs/api/resources/shader/setrhi.md
Normal 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 着色器接口
|
||||
28
docs/api/resources/shader/setshaderlanguage.md
Normal file
28
docs/api/resources/shader/setshaderlanguage.md
Normal 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) - 返回类总览
|
||||
28
docs/api/resources/shader/setshadertype.md
Normal file
28
docs/api/resources/shader/setshadertype.md
Normal 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) - 返回类总览
|
||||
35
docs/api/resources/shader/setsourcecode.md
Normal file
35
docs/api/resources/shader/setsourcecode.md
Normal 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) - 返回类总览
|
||||
@@ -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 回收。
|
||||
|
||||
### 类型与语言
|
||||
|
||||
|
||||
Reference in New Issue
Block a user