/* ---------------------------------------------------------------------------- * 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