aboutsummaryrefslogtreecommitdiffstats
path: root/include/YAGE/glslprogram.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/YAGE/glslprogram.hpp')
-rw-r--r--include/YAGE/glslprogram.hpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/YAGE/glslprogram.hpp b/include/YAGE/glslprogram.hpp
new file mode 100644
index 00000000..3e03723a
--- /dev/null
+++ b/include/YAGE/glslprogram.hpp
@@ -0,0 +1,37 @@
+#ifndef GLSL_PROGRAM_HPP
+#define GLSL_PROGRAM_HPP
+
+#include <GL/glew.h>
+
+#include <string>
+
+namespace yage
+{
+
+class GlslProgram
+{
+private:
+ // compiled shader program id
+ GLuint program_id_ = 0;
+ GLuint vertex_shader_id_ = 0;
+ GLuint fragment_shader_id_ = 0;
+ int attribute_index_ = 0;
+
+ // compiles one shader
+ void compileShader(const GLuint &shader, const std::string &file_path);
+public:
+ GlslProgram();
+ ~GlslProgram();
+
+ // compiles vertex and fragment shader
+ void compileShaders(const std::string &vertex_shader_path, const std::string &fragment_shader_path);
+ void linkShaders();
+ void addAttribute(const std::string &attribute_name);
+ GLint getUniformLocation(const std::string &uniform_name);
+ void use();
+ void unuse();
+};
+
+} // yage
+
+#endif