MusicSpectrum  1.0.0
shader.hpp
Vá para a documentação desse arquivo.
1 #pragma once
2 
3 #include <GL/glew.h>
4 #include <fstream>
5 #include <glm/glm.hpp>
6 #include <sstream>
7 #include <string>
8 #include <unordered_map>
9 #include <vector>
10 
17  std::string vertex_src;
18 
20  std::string fragment_src;
21 };
22 
30 class Shader {
31  private:
35  GLuint m_buffer_id;
43  std::unordered_map<std::string, GLint> m_uniformLocationCache;
44 
45  public:
46  Shader(const std::string &filepath);
47  ~Shader();
48 
49  void bind() const;
50  void unbind() const;
51 
52  // Set Uniforms
53  void setUniform3f(const std::string &name, glm::vec3 value);
54  void setUniform4f(const std::string &name, glm::vec4 value);
55  void setUniformMat4f(const std::string &name, const glm::mat4 &matrix);
56 
57  private:
58  GLuint createShader(const std::string &vertex_shader,
59  const std::string &fragment_shader);
60  ShaderProgramSource parseShader(const std::string &filepath);
61  GLuint compileShader(GLuint type, const std::string &source);
62  GLint getUniformLocation(const std::string &name);
63 };
Definition: shader.hpp:30
void setUniformMat4f(const std::string &name, const glm::mat4 &matrix)
Definition: shader.cpp:167
GLint getUniformLocation(const std::string &name)
Definition: shader.cpp:185
void setUniform3f(const std::string &name, glm::vec3 value)
Definition: shader.cpp:143
GLuint createShader(const std::string &vertex_shader, const std::string &fragment_shader)
Definition: shader.cpp:34
void unbind() const
Definition: shader.cpp:134
ShaderProgramSource parseShader(const std::string &filepath)
Definition: shader.cpp:93
Shader(const std::string &filepath)
Definition: shader.cpp:13
GLuint m_buffer_id
Definition: shader.hpp:35
GLuint compileShader(GLuint type, const std::string &source)
Definition: shader.cpp:60
void bind() const
Definition: shader.cpp:126
void setUniform4f(const std::string &name, glm::vec4 value)
Definition: shader.cpp:155
std::unordered_map< std::string, GLint > m_uniformLocationCache
Definition: shader.hpp:43
~Shader()
Definition: shader.cpp:23
Definition: shader.hpp:15
std::string fragment_src
Código fonte do fragment shader.
Definition: shader.hpp:20
std::string vertex_src
Código fonte do vertex shader.
Definition: shader.hpp:17