Files
XCEngine/docs/api/resources/shaderloader/index.md

59 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ShaderLoader
## 命名空间
`XCEngine::Resources`
## 类型
类 (Class)
## 描述
着色器资源加载器,负责从磁盘加载 `.vert``.frag``.geom``.comp``.glsl``.hlsl``.shader` 格式的着色器资源文件。
## 概述
`ShaderLoader` 继承自 `IResourceLoader`实现了着色器资源的加载功能。它支持多种着色器语言和类型能够根据文件扩展名自动识别着色器语言GLSL/HLSL和着色器类型Vertex/Fragment/Geometry/Compute。加载过程中会读取源文件内容、检测着色器类型并创建 `Shader` 对象。
## 公共方法
| 方法 | 签名 | 描述 |
|------|------|------|
| [ShaderLoader](methods/constructor.md) | `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>("shaders/forward.vert");
if (shaderHandle.IsValid()) {
Shader* shader = shaderHandle.Get();
// 使用着色器...
}
// 直接使用 ShaderLoader
ShaderLoader loader;
LoadResult result = loader.Load("shaders/pbr.frag");
if (result.IsSuccess()) {
Shader* shader = static_cast<Shader*>(result.GetResource());
// 使用着色器...
}
```
## 相关文档
- [Shader](../shader/shader.md)
- [IResourceLoader](../iloader/iloader.md)
- [ResourceManager](../resourcemanager/resourcemanager.md)