docs: update resources API docs
This commit is contained in:
59
docs/api/resources/material-loader/index.md
Normal file
59
docs/api/resources/material-loader/index.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# MaterialLoader
|
||||
|
||||
## 命名空间
|
||||
|
||||
`XCEngine::Resources`
|
||||
|
||||
## 类型
|
||||
|
||||
类 (Class)
|
||||
|
||||
## 描述
|
||||
|
||||
材质资源加载器,负责从磁盘加载 `.mat`、`.material` 和 `.json` 格式的材质资源文件。
|
||||
|
||||
## 概述
|
||||
|
||||
`MaterialLoader` 继承自 `IResourceLoader`,实现了材质资源的加载功能。它支持多种材质文件格式,能够解析材质文件中的 shader 引用并自动加载对应的 Shader 资源。加载过程中会提取材质的基本属性信息并创建 `Material` 对象。
|
||||
|
||||
## 公共方法
|
||||
|
||||
| 方法 | 签名 | 描述 |
|
||||
|------|------|------|
|
||||
| [MaterialLoader](methods/material-loader-constructor.md) | `MaterialLoader()` | 默认构造函数 |
|
||||
| [~MaterialLoader](methods/material-loader-destructor.md) | `virtual ~MaterialLoader()` | 析构函数 |
|
||||
| [GetResourceType](methods/get-resource-type.md) | `ResourceType GetResourceType() const` | 返回资源类型为 Material |
|
||||
| [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/MaterialLoader.h"
|
||||
#include "Resources/ResourceManager.h"
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
|
||||
// 通过 ResourceManager 加载材质
|
||||
auto materialHandle = ResourceManager::Get().Load<Material>("assets/materials/wood.mat");
|
||||
if (materialHandle.IsValid()) {
|
||||
Material* material = materialHandle.Get();
|
||||
// 使用材质...
|
||||
}
|
||||
|
||||
// 直接使用 MaterialLoader
|
||||
MaterialLoader loader;
|
||||
LoadResult result = loader.Load("assets/materials/wood.material");
|
||||
if (result.IsSuccess()) {
|
||||
Material* material = static_cast<Material*>(result.GetResource());
|
||||
// 使用材质...
|
||||
}
|
||||
```
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Material](../material/material.md)
|
||||
- [IResourceLoader](../iloader/iloader.md)
|
||||
- [ResourceManager](../resource-manager/resource-manager.md)
|
||||
31
docs/api/resources/material-loader/methods/can-load.md
Normal file
31
docs/api/resources/material-loader/methods/can-load.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# MaterialLoader::CanLoad
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
bool CanLoad(const Containers::String& path) const override;
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
检查给定路径的文件是否可以被该加载器加载。通过提取文件扩展名并与支持列表进行比较来判断。
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数 | 类型 | 描述 |
|
||||
|------|------|------|
|
||||
| path | `const Containers::String&` | 待检查的文件路径 |
|
||||
|
||||
## 返回值
|
||||
|
||||
`bool` - 如果文件扩展名在支持列表中返回 `true`,否则返回 `false`
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
MaterialLoader loader;
|
||||
bool canLoad1 = loader.CanLoad("assets/materials/wood.mat"); // true
|
||||
bool canLoad2 = loader.CanLoad("assets/materials/wood.material"); // true
|
||||
bool canLoad3 = loader.CanLoad("assets/materials/wood.json"); // true
|
||||
bool canLoad4 = loader.CanLoad("assets/materials/wood.png"); // false
|
||||
```
|
||||
@@ -0,0 +1,27 @@
|
||||
# MaterialLoader::GetDefaultSettings
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
ImportSettings* GetDefaultSettings() const override;
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
返回材质加载器的默认导入设置。当前实现返回 `nullptr`,表示材质加载不使用特殊的导入设置。
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
`ImportSettings*` - 始终返回 `nullptr`
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
MaterialLoader loader;
|
||||
ImportSettings* settings = loader.GetDefaultSettings();
|
||||
// settings == nullptr
|
||||
```
|
||||
@@ -0,0 +1,27 @@
|
||||
# MaterialLoader::GetResourceType
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
ResourceType GetResourceType() const override;
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
返回该加载器管理的资源类型,固定为 `ResourceType::Material`。此方法继承自 `IResourceLoader` 接口,用于资源管理器识别加载器类型。
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
`ResourceType` - 资源类型枚举值,始终返回 `ResourceType::Material`
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
MaterialLoader loader;
|
||||
ResourceType type = loader.GetResourceType();
|
||||
// type == ResourceType::Material
|
||||
```
|
||||
@@ -0,0 +1,36 @@
|
||||
# MaterialLoader::GetSupportedExtensions
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
Containers::Array<Containers::String> GetSupportedExtensions() const override;
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
返回该加载器支持的文件扩展名列表。`MaterialLoader` 支持三种材质文件格式:
|
||||
- `.mat` - 材质文件
|
||||
- `.material` - 材质文件(完整格式)
|
||||
- `.json` - JSON 格式的材质描述文件
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
`Containers::Array<Containers::String>` - 支持的扩展名数组
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
MaterialLoader loader;
|
||||
auto extensions = loader.GetSupportedExtensions();
|
||||
for (const auto& ext : extensions) {
|
||||
printf("Supported extension: %s\n", ext.CStr());
|
||||
}
|
||||
// Output:
|
||||
// Supported extension: mat
|
||||
// Supported extension: material
|
||||
// Supported extension: json
|
||||
```
|
||||
62
docs/api/resources/material-loader/methods/load.md
Normal file
62
docs/api/resources/material-loader/methods/load.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# MaterialLoader::Load
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
LoadResult Load(const Containers::String& path, const ImportSettings* settings = nullptr) override;
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
加载指定路径的材质资源文件。加载过程包括:
|
||||
1. 读取文件数据
|
||||
2. 创建 `Material` 对象并设置基本信息(路径、名称、GUID)
|
||||
3. 解析 JSON 格式内容,提取 shader 路径
|
||||
4. 加载引用的 Shader 资源
|
||||
5. 设置材质的有效性标志和内存占用
|
||||
|
||||
当前实现仅支持解析 JSON 中的 `"shader"` 字段并加载对应的 Shader 资源。
|
||||
|
||||
## 参数
|
||||
|
||||
| 参数 | 类型 | 默认值 | 描述 |
|
||||
|------|------|--------|------|
|
||||
| path | `const Containers::String&` | - | 材质文件路径 |
|
||||
| settings | `const ImportSettings*` | `nullptr` | 导入设置(当前未使用) |
|
||||
|
||||
## 返回值
|
||||
|
||||
`LoadResult` - 加载结果对象,包含成功加载的 `Material` 指针或错误信息
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
#include "Resources/MaterialLoader.h"
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
|
||||
MaterialLoader loader;
|
||||
LoadResult result = loader.Load("assets/materials/pbr.metallic");
|
||||
|
||||
if (result.IsSuccess()) {
|
||||
Material* material = static_cast<Material*>(result.GetResource());
|
||||
printf("Loaded material: %s, GUID: %s\n",
|
||||
material->m_name.CStr(),
|
||||
material->m_guid.ToString().CStr());
|
||||
} else {
|
||||
printf("Failed to load material: %s\n", result.GetError().CStr());
|
||||
}
|
||||
```
|
||||
|
||||
### JSON 材质文件格式
|
||||
|
||||
```json
|
||||
{
|
||||
"shader": "shaders/pbr.glsl",
|
||||
"properties": {
|
||||
"albedo": [1.0, 1.0, 1.0, 1.0],
|
||||
"metallic": 0.0,
|
||||
"roughness": 0.5
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,29 @@
|
||||
# MaterialLoader::MaterialLoader
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
MaterialLoader();
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
`MaterialLoader` 类的默认构造函数,使用默认方式构造一个 `MaterialLoader` 实例。
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
无
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
#include "Resources/MaterialLoader.h"
|
||||
|
||||
using namespace XCEngine::Resources;
|
||||
|
||||
MaterialLoader loader;
|
||||
```
|
||||
@@ -0,0 +1,28 @@
|
||||
# MaterialLoader::~MaterialLoader
|
||||
|
||||
## 方法签名
|
||||
|
||||
```cpp
|
||||
virtual ~MaterialLoader() override;
|
||||
```
|
||||
|
||||
## 详细描述
|
||||
|
||||
`MaterialLoader` 类的析构函数,用于清理 `MaterialLoader` 实例占用的资源。当前实现为默认析构函数。
|
||||
|
||||
## 参数
|
||||
|
||||
无
|
||||
|
||||
## 返回值
|
||||
|
||||
无
|
||||
|
||||
## 示例
|
||||
|
||||
```cpp
|
||||
{
|
||||
MaterialLoader loader;
|
||||
// 使用 loader...
|
||||
} // loader 在此自动销毁
|
||||
```
|
||||
Reference in New Issue
Block a user