# 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 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("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(result.GetResource()); // 使用着色器... } ``` ## 相关文档 - [Shader](../shader/shader.md) - [IResourceLoader](../iloader/iloader.md) - [ResourceManager](../resourcemanager/resourcemanager.md)