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

@@ -0,0 +1,36 @@
# ShaderLoader::CanLoad
## 方法签名
```cpp
bool CanLoad(const Containers::String& path) const override;
```
## 详细描述
检查此加载器是否能加载指定路径的着色器文件。该方法通过获取文件扩展名并与支持列表进行匹配来判断。
## 参数
| 参数 | 类型 | 描述 |
|------|------|------|
| path | `const Containers::String&` | 文件路径 |
## 返回值
`bool` - 如果扩展名在支持列表中则返回 `true`,否则返回 `false`
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
ShaderLoader loader;
bool canLoad1 = loader.CanLoad("shaders/pbr.vert"); // true
bool canLoad2 = loader.CanLoad("shaders/pbr.frag"); // true
bool canLoad3 = loader.CanLoad("shaders/pbr.hlsl"); // true
bool canLoad4 = loader.CanLoad("textures/wood.png"); // false
```

View File

@@ -0,0 +1,29 @@
# ShaderLoader::ShaderLoader
## 方法签名
```cpp
ShaderLoader();
```
## 详细描述
默认构造函数,使用默认行为构造 `ShaderLoader` 对象。该构造函数不执行任何特殊初始化操作。
## 参数
## 返回值
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
ShaderLoader loader;
```

View File

@@ -0,0 +1,33 @@
# ShaderLoader::~ShaderLoader
## 方法签名
```cpp
virtual ~ShaderLoader() override;
```
## 详细描述
析构函数,用于销毁 `ShaderLoader` 对象。该析构函数不执行任何特殊清理操作。
## 参数
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
{
ShaderLoader loader;
// 使用 loader...
}
// loader 在此自动销毁
```
## 相关文档
- [ShaderLoader 总览](../../../rhi/d3d12/fence/index.md) - 返回类总览

View File

@@ -0,0 +1,31 @@
# ShaderLoader::GetDefaultSettings
## 方法签名
```cpp
ImportSettings* GetDefaultSettings() const override;
```
## 详细描述
返回默认的导入设置。当前实现返回 `nullptr`,表示没有特定的默认设置。
## 参数
## 返回值
`ImportSettings*` - 始终返回 `nullptr`
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
ShaderLoader loader;
ImportSettings* settings = loader.GetDefaultSettings();
// settings == nullptr
```

View File

@@ -0,0 +1,31 @@
# ShaderLoader::GetResourceType
## 方法签名
```cpp
ResourceType GetResourceType() const override;
```
## 详细描述
返回此加载器支持的资源类型。该方法继承自 `IResourceLoader` 接口,返回值为 `ResourceType::Shader`
## 参数
## 返回值
`ResourceType` - 资源类型枚举值,当前返回 `ResourceType::Shader`
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
ShaderLoader loader;
ResourceType type = loader.GetResourceType();
// type == ResourceType::Shader
```

View File

@@ -0,0 +1,44 @@
# ShaderLoader::GetSupportedExtensions
## 方法签名
```cpp
Containers::Array<Containers::String> GetSupportedExtensions() const override;
```
## 详细描述
返回此加载器支持的文件扩展名列表。支持以下格式:
| 扩展名 | 描述 |
|--------|------|
| `.vert` | 顶点着色器 (Vertex Shader) |
| `.frag` | 片段着色器 (Fragment/Pixel Shader) |
| `.geom` | 几何着色器 (Geometry Shader) |
| `.comp` | 计算着色器 (Compute Shader) |
| `.glsl` | 通用 GLSL 着色器 |
| `.hlsl` | HLSL 着色器 |
| `.shader` | 通用着色器文件 |
## 参数
## 返回值
`Containers::Array<Containers::String>` - 支持的文件扩展名数组
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
ShaderLoader loader;
auto extensions = loader.GetSupportedExtensions();
for (const auto& ext : extensions) {
printf("Supported extension: %s\n", ext.CStr());
}
```

View File

@@ -0,0 +1,74 @@
# ShaderLoader::Load
## 方法签名
```cpp
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override;
```
## 详细描述
加载指定路径的着色器资源文件。加载过程包括:
1. 读取文件数据
2. 将二进制数据转换为字符串形式的着色器源代码
3. 创建 `Shader` 对象并设置基本信息路径、名称、GUID
4. 根据文件扩展名检测着色器语言HLSL 或 GLSL
5. 根据文件扩展名检测着色器类型(顶点、片段、几何、计算)
6. 设置着色器源代码和有效性标志
7. 计算并设置资源的内存占用
**语言检测规则:**
- `.hlsl` 扩展名 → `ShaderLanguage::HLSL`
- 其他扩展名 → `ShaderLanguage::GLSL`
**类型检测规则:**
- `.vert``ShaderType::Vertex`
- `.frag``ShaderType::Fragment`
- `.geom``ShaderType::Geometry`
- `.comp``ShaderType::Compute`
- 其他扩展名 → `ShaderType::Fragment`(默认)
## 参数
| 参数 | 类型 | 默认值 | 描述 |
|------|------|--------|------|
| path | `const Containers::String&` | - | 着色器文件路径 |
| settings | `const ImportSettings*` | `nullptr` | 导入设置(当前未使用) |
## 返回值
`LoadResult` - 加载结果对象,包含成功加载的 `Shader` 指针或错误信息
## 示例
```cpp
#include "Resources/ShaderLoader.h"
using namespace XCEngine::Resources;
ShaderLoader loader;
// 加载顶点着色器
LoadResult vertResult = loader.Load("assets/shaders/pbr.vert");
if (vertResult.IsSuccess()) {
Shader* vertShader = static_cast<Shader*>(vertResult.GetResource());
printf("Loaded vertex shader: %s\n", vertShader->m_name.CStr());
}
// 加载片段着色器
LoadResult fragResult = loader.Load("assets/shaders/pbr.frag");
if (fragResult.IsSuccess()) {
Shader* fragShader = static_cast<Shader*>(fragResult.GetResource());
printf("Loaded fragment shader: %s\n", fragShader->m_name.CStr());
} else {
printf("Failed to load fragment shader: %s\n", fragResult.GetError().CStr());
}
// 加载 HLSL 着色器
LoadResult hlslResult = loader.Load("assets/shaders/vertex.hlsl");
if (hlslResult.IsSuccess()) {
Shader* hlslShader = static_cast<Shader*>(hlslResult.GetResource());
// HLSL 着色器...
}
```