Hana
Loading...
Searching...
No Matches
OpenGLShader.h
1#pragma once
2
3#include "Hana/Renderer/Shader.h"
4#include <glm/glm.hpp>
5
6// TODO: REMOVE!
7typedef unsigned int GLenum;
8
9namespace Hana
10{
11 class OpenGLShader : public Shader
12 {
13 public:
14 OpenGLShader(const std::string& filepath);
15 OpenGLShader(const std::string& name, const std::string& vertexSrc, const std::string& fragmentSrc);
16 virtual ~OpenGLShader();
17
18 virtual void Bind() const override;
19 virtual void Unbind() const override;
20
21 virtual void SetInt(const std::string& name, int value) override;
22 virtual void SetFloat3(const std::string& name, const glm::vec3& value) override;
23 virtual void SetFloat4(const std::string& name, const glm::vec4& value) override;
24 virtual void SetMat4(const std::string& name, const glm::mat4& value) override;
25
26 virtual const std::string& GetName() const override { return m_Name; }
27
28 void UploadUniformInt(const std::string& name, int value);
29
30 void UploadUniformFloat(const std::string& name, float value);
31 void UploadUniformFloat2(const std::string& name, const glm::vec2& value);
32 void UploadUniformFloat3(const std::string& name, const glm::vec3& value);
33 void UploadUniformFloat4(const std::string& name, const glm::vec4& value);
34
35 void UploadUniformMat3(const std::string& name, const glm::mat3& matrix);
36 void UploadUniformMat4(const std::string& name, const glm::mat4& matrix);
37 private:
38 std::string ReadFile(const std::string& filepath);
39 std::unordered_map<GLenum, std::string> PreProcess(const std::string& source);
40 void Compile(const std::unordered_map<GLenum, std::string>& shaderSources);
41
42 unsigned int m_RendererID;
43 std::string m_Name;
44 };
45}
Definition Shader.h:11