Molecular Vis
Improving perception of molecular visualization
Shader.h
1 #pragma once
2 #include <Gl/glew.h>
3 #include <glm/glm.hpp>
4 #include <string>
5 #include <fstream>
6 #include <iostream>
7 #include <unordered_map>
8 
17 class Shader
18 {
19 private:
20  GLuint handle;
21  std::string vertexShader, fragmentShader, computeShader, geometryShader;
22  std::unordered_map<std::string, GLint> locations;
23 
24  void handleError(std::string name, GLuint shaderId);
25  GLuint loadStandardProgram();
26  GLuint loadComputeProgram();
27  bool loadShader(std::string source, GLenum shaderType, GLuint& shaderHandle);
28 
29  GLint getUniformLocation(std::string location);
30 
31  std::string readFile(std::string filePath);
32 
33  void processDirectives(std::string& source);
34  void processImport(std::string& source);
35 
36 public:
46  static const std::string IMPORT_DIRECTIVE;
47 
52  static const std::string SHADER_DIRECTORY;
59  Shader(std::string vertexShader, std::string fragmentShader);
60 
66  Shader(std::string computeShader);
67 
74  void setUniform(std::string uniform, const glm::vec3& value);
81  void setUnifrom(GLint location, const glm::vec3& value);
88  void setUniform(std::string uniform, const glm::uvec3 & value);
95  void setUnifrom(GLint location, const glm::uvec3 & value);
102  void setUniform(std::string uniform, const int value);
109  void setUniform(GLint location, const int value);
116  void setUniform(std::string uniform, const float value);
123  void setUniform(GLint location, const float value);
130  void setUniform(std::string uniform, const glm::mat4& mat);
137  void setUniform(GLint location, const glm::mat4& mat);
144  void setUniform(std::string uniform, const glm::mat3& mat);
145 
152  void setUniform(GLint location, const glm::mat3& mat);
153 
158  void use();
159 
164  void unuse();
165  ~Shader();
166 };
167 
void setUnifrom(GLint location, const glm::vec3 &value)
Definition: Shader.cpp:252
static const std::string IMPORT_DIRECTIVE
Definition: Shader.h:46
void setUniform(std::string uniform, const glm::vec3 &value)
Definition: Shader.cpp:246
void unuse()
Definition: Shader.cpp:317
Class handling shader construction and managment.
Definition: Shader.h:17
void use()
Definition: Shader.cpp:312
Shader(std::string vertexShader, std::string fragmentShader)
Definition: Shader.cpp:233
static const std::string SHADER_DIRECTORY
Definition: Shader.h:52