Extra2D/include/assets/loaders/shader_loader.h

56 lines
1.5 KiB
C++
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.

#pragma once
#include <assets/asset_loader.h>
#include <renderer/shader.h>
namespace extra2d {
/**
* @brief 着色器资源加载器
*
* 支持从文件或源码加载着色器资源
*/
class ShaderLoader : public AssetLoader<Shader> {
public:
/**
* @brief 从文件加载着色器
* @param path 单个文件路径(自动推断 .vert/.frag
* @return 着色器指针,失败返回 nullptr
*/
Ptr<Shader> load(const std::string& path) override;
/**
* @brief 从文件加载着色器(指定顶点和片段着色器)
* @param vertPath 顶点着色器路径
* @param fragPath 片段着色器路径
* @return 着色器指针,失败返回 nullptr
*/
Ptr<Shader> load(const std::string& vertPath, const std::string& fragPath);
/**
* @brief 从内存加载着色器(不支持)
* @param data 数据指针
* @param size 数据大小
* @return nullptr
*/
Ptr<Shader> loadFromMemory(const uint8_t* data, size_t size) override;
/**
* @brief 从源码加载着色器
* @param vsSource 顶点着色器源码
* @param fsSource 片段着色器源码
* @return 着色器指针,失败返回 nullptr
*/
Ptr<Shader> loadFromSource(const std::string& vsSource, const std::string& fsSource);
/**
* @brief 获取支持的文件扩展名
* @return 扩展名列表
*/
std::vector<std::string> getExtensions() const override {
return {".glsl", ".vert", ".frag"};
}
};
} // namespace extra2d