docs: update resources API docs
This commit is contained in:
59
docs/api/resources/shader-loader/index.md
Normal file
59
docs/api/resources/shader-loader/index.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# ShaderLoader
|
||||
|
||||
## 命名空间
|
||||
|
||||
`XCEngine::Resources`
|
||||
|
||||
## 类型
|
||||
|
||||
类 (Class)
|
||||
|
||||
## 描述
|
||||
|
||||
着色器资源加载器,负责从磁盘加载 `.vert`、`.frag`、`.geom`、`.comp`、`.glsl`、`.hlsl` 和 `.shader` 格式的着色器资源文件。
|
||||
|
||||
## 概述
|
||||
|
||||
`ShaderLoader` 继承自 `IResourceLoader`,实现了着色器资源的加载功能。它支持多种图形 API 的着色器格式,包括 GLSL(OpenGL/Vulkan)和 HLSL(DirectX)。加载过程中会根据文件扩展名自动检测着色器类型和语言,创建 `Shader` 对象并设置相应的元数据。当前实现专注于文件读取和基础资源创建,着色器编译和实际绑定由渲染层完成。
|
||||
|
||||
## 公共方法
|
||||
|
||||
| 方法 | 签名 | 描述 |
|
||||
|------|------|------|
|
||||
| [ShaderLoader](methods/constructor.md) | `ShaderLoader()` | 默认构造函数 |
|
||||
| [~ShaderLoader](methods/destructor.md) | `virtual ~ShaderLoader()` | 析构函数 |
|
||||
| [GetResourceType](methods/get-resource-type.md) | `ResourceType GetResourceType() const` | 返回资源类型为 Shader |
|
||||
| [GetSupportedExtensions](methods/get-supported-extensions.md) | `Array<String> GetSupportedExtensions() const` | 返回支持的扩展名列表 |
|
||||
| [CanLoad](methods/can-load.md) | `bool CanLoad(const String& path) const` | 检查给定路径是否可被加载 |
|
||||
| [Load](methods/load.md) | `LoadResult Load(const String& path, const ImportSettings* settings = nullptr)` | 加载指定路径的着色器资源 |
|
||||
| [GetDefaultSettings](methods/get-default-settings.md) | `ImportSettings* GetDefaultSettings() const` | 返回默认导入设置 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
```cpp
|
||||
#include "Resources/ShaderLoader.h"
|
||||
#include "Resources/ResourceManager.h"
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
|
||||
// 通过 ResourceManager 加载着色器
|
||||
auto shaderHandle = ResourceManager::Get().Load<Shader>("assets/shaders/pbr.vert");
|
||||
if (shaderHandle.IsValid()) {
|
||||
Shader* shader = shaderHandle.Get();
|
||||
// 使用着色器...
|
||||
}
|
||||
|
||||
// 直接使用 ShaderLoader
|
||||
ShaderLoader loader;
|
||||
LoadResult result = loader.Load("assets/shaders/pbr.frag");
|
||||
if (result.IsSuccess()) {
|
||||
Shader* shader = static_cast<Shader*>(result.GetResource());
|
||||
// 使用着色器...
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Shader](../shader/shader.md)
|
||||
- [IResourceLoader](../iloader/iloader.md)
|
||||
- [ResourceManager](../resource-manager/resource-manager.md)
|
||||
36
docs/api/resources/shader-loader/methods/can-load.md
Normal file
36
docs/api/resources/shader-loader/methods/can-load.md
Normal 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
|
||||
```
|
||||
29
docs/api/resources/shader-loader/methods/constructor.md
Normal file
29
docs/api/resources/shader-loader/methods/constructor.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# ShaderLoader::ShaderLoader
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
ShaderLoader();
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
默认构造函数,使用默认行为构造 `ShaderLoader` 对象。该构造函数不执行任何特殊初始化操作。
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
无
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
#include "Resources/ShaderLoader.h"
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
|
||||
ShaderLoader loader;
|
||||
```
|
||||
33
docs/api/resources/shader-loader/methods/destructor.md
Normal file
33
docs/api/resources/shader-loader/methods/destructor.md
Normal 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) - 返回类总览
|
||||
@@ -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
|
||||
```
|
||||
@@ -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
|
||||
```
|
||||
@@ -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());
|
||||
}
|
||||
```
|
||||
74
docs/api/resources/shader-loader/methods/load.md
Normal file
74
docs/api/resources/shader-loader/methods/load.md
Normal 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 着色器...
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user