/* ---------------------------------------------------------------------------- * glslprogram.hpp * * Copyright (c) 2017 Yann Herklotz Grave -- MIT License * See file LICENSE for more details * ---------------------------------------------------------------------------- */ #ifndef GLSL_PROGRAM_HPP #define GLSL_PROGRAM_HPP #include #include 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() = 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& 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