Files
Frostbite2D/Frostbite2D/include/frostbite2D/graphics/shader_manager.h
Lenheart 5af657c5c9 feat(npc): 添加NPC交互高亮效果及复合纹理支持
实现NPC交互时的绿色高亮效果,通过InteractionHighlightSprite类实现
重构NpcAnimation支持复合纹理渲染,优化高亮效果的性能
添加ShaderManager获取所有加载Shader的方法,优化渲染器uniform更新逻辑
2026-04-07 23:17:34 +08:00

43 lines
973 B
C++

#pragma once
#include <frostbite2D/graphics/shader.h>
#include <frostbite2D/types/type_alias.h>
#include <string>
#include <unordered_map>
namespace frostbite2D {
class Renderer;
class ShaderManager {
public:
static ShaderManager& get();
bool init(const std::string& shadersDir);
void shutdown();
Shader* getShader(const std::string& name);
bool hasShader(const std::string& name) const;
const std::unordered_map<std::string, Ptr<Shader>>& getLoadedShaders() const {
return shaders_;
}
~ShaderManager() = default;
ShaderManager() = default;
private:
std::unordered_map<std::string, Ptr<Shader>> shaders_;
std::string shadersDir_;
bool loadShadersFromConfig(const std::string& configPath);
bool loadShader(const std::string& name, const std::string& vertPath,
const std::string& fragPath);
ShaderManager(const ShaderManager&) = delete;
ShaderManager& operator=(const ShaderManager&) = delete;
};
}