From f949692714e72a0e2d45ebb6a5d698424ab71dee Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Mon, 25 Dec 2017 13:54:09 +0000 Subject: [Broken] Reorganising and fixing. --- yage/render/glslprogram.h | 58 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 yage/render/glslprogram.h (limited to 'yage/render/glslprogram.h') diff --git a/yage/render/glslprogram.h b/yage/render/glslprogram.h new file mode 100644 index 00000000..0617bc1e --- /dev/null +++ b/yage/render/glslprogram.h @@ -0,0 +1,58 @@ +/** --------------------------------------------------------------------------- + * @file: glslprogram.h + * + * Copyright (c) 2017 Yann Herklotz Grave + * MIT License, see LICENSE file for more details. + * ---------------------------------------------------------------------------- + */ + +#ifndef GLSL_PROGRAM_H +#define GLSL_PROGRAM_H + +#include + +#include + +namespace yage +{ + +class GlslProgram +{ +public: + GlslProgram() = default; + GlslProgram(const GlslProgram &) = delete; + GlslProgram(GlslProgram &&) = delete; + ~GlslProgram(); + + GlslProgram &operator=(const GlslProgram &) = delete; + GlslProgram &operator=(GlslProgram &&) = delete; + + /// compiles vertex and fragment shader + void compileShaders(const std::string &vertexShader, + const std::string fragmentShader); + void compileShadersFromFile(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(); + + void defaultSetup(); + +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(GLuint shader, const std::string &shaderContent); + void compileShaderFromFile(GLuint shader, const std::string &file_path); + void initShaderId(); +}; + +} // namespace yage + +#endif -- cgit