diff options
author | Yann Herklotz <ymherklotz@gmail.com> | 2017-12-27 19:21:12 +0000 |
---|---|---|
committer | Yann Herklotz <ymherklotz@gmail.com> | 2017-12-27 19:21:12 +0000 |
commit | 354d7df4d2779ed7391701d1ef4344e959b64582 (patch) | |
tree | 81ecdc8d323cae78a86fb9c99524f57c705eeabc /yage/render/shader.h | |
parent | f949692714e72a0e2d45ebb6a5d698424ab71dee (diff) | |
download | YAGE-354d7df4d2779ed7391701d1ef4344e959b64582.tar.gz YAGE-354d7df4d2779ed7391701d1ef4344e959b64582.zip |
[Broken] Texture is black.
Diffstat (limited to 'yage/render/shader.h')
-rw-r--r-- | yage/render/shader.h | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/yage/render/shader.h b/yage/render/shader.h new file mode 100644 index 00000000..7f4d2f9d --- /dev/null +++ b/yage/render/shader.h @@ -0,0 +1,49 @@ +/** --------------------------------------------------------------------------- + * @file: shader.h + * + * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com> + * MIT License, see LICENSE file for more details. + * ---------------------------------------------------------------------------- + */ + +#ifndef YAGE_RENDER_SHADER_H +#define YAGE_RENDER_SHADER_H + +#include <glm/glm.hpp> +#include <glad/glad.h> + +#include <string> + +namespace yage +{ + +class Shader +{ +public: + Shader(const std::string &vertex_path, const std::string &fragment_path); + Shader(const Shader &) = delete; + Shader(Shader &&) = delete; + ~Shader(); + + Shader &operator=(const Shader &) = delete; + Shader &operator=(Shader &&) = delete; + + /// compiles vertex and fragment shader + void use() const; + + /// set uniforms of different type + void setUniform(const std::string &name, int value) const; + void setUniform(const std::string &name, float value) const; + void setUniform(const std::string &name, const glm::mat4 &matrix) const; + +private: + /// compiled shader program id + GLuint program_id_ = 0; + + GLint getUniformLocation(const std::string &uniform_name) const; + void errorCheck(GLuint shader, const std::string &shader_type) const; +}; + +} // namespace yage + +#endif |