Hana
Loading...
Searching...
No Matches
Shader.h
1#pragma once
2
3#include <string>
4#include <unordered_map>
5
6#include <glm/glm.hpp>
7
8namespace Hana
9{
10 class Shader
11 {
12 public:
13 virtual ~Shader() = default;
14
15 virtual void Bind() const = 0;
16 virtual void Unbind() const = 0;
17
18 virtual void SetInt(const std::string& name, int value) = 0;
19 virtual void SetFloat3(const std::string& name, const glm::vec3& value) = 0;
20 virtual void SetFloat4(const std::string& name, const glm::vec4& value) = 0;
21 virtual void SetMat4(const std::string& name, const glm::mat4& value) = 0;
22
23 virtual const std::string& GetName() const = 0;
24
25 static Ref<Shader> Create(const std::string& filepath);
26 static Ref<Shader> Create(const std::string& name, const std::string& vertexSrc, const std::string& fragmentSrc);
27 };
28
30 {
31 public:
32 void Add(const std::string& name, const Ref<Shader>& shader);
33 void Add(const Ref<Shader>& shader);
34
35 Ref<Shader> Load(const std::string& filepath);
36 Ref<Shader> Load(const std::string& name, const std::string& filepath);
37
38 Ref<Shader> Get(const std::string& name);
39
40 bool Exists(const std::string& name) const;
41 private:
42 std::unordered_map<std::string, Ref<Shader>> m_Shaders;
43 };
44}
Definition Shader.h:30
Definition Shader.h:11