opengl-playground/include/opengl-playground/openglshader.hpp

34 lines
1.1 KiB
C++
Raw Normal View History

#ifndef OPENGL_SHADER_H
#define OPENGL_SHADER_H
#include <string>
#include <epoxy/gl.h>
2020-03-21 22:38:10 +01:00
#include <glm/glm.hpp>
class OpenGlShaderProgram
{
public:
OpenGlShaderProgram(std::string vertex_file, std::string geometry_file, std::string fragment_file);
2020-03-23 17:26:32 +01:00
OpenGlShaderProgram(const OpenGlShaderProgram &) = delete;
OpenGlShaderProgram(const OpenGlShaderProgram &&) = delete;
~OpenGlShaderProgram();
int compile();
void unload();
int use();
2020-03-18 22:42:04 +01:00
int getUniformLoc(const std::string &uniform);
void setUniformFloat(const std::string &uniform, float value);
2020-03-23 17:26:32 +01:00
void setUniformInt(const std::string &uniform, int value);
2020-03-18 22:42:04 +01:00
void setUniformVec2(const std::string &uniform, float *vector);
void setUniformVec3(const std::string &uniform, const glm::vec3 &vector);
2020-03-21 22:38:10 +01:00
void setUniformMat4(const std::string &uniform, const glm::mat4 &matrix);
2020-03-23 17:26:32 +01:00
void setUniformVec4(const std::string &uniform, const glm::vec4 &vector);
private:
bool compiled;
GLuint shader_program;
std::string vertex_file;
std::string geometry_file;
std::string fragment_file;
};
#endif // OPENGL_SHADER_H