diff options
Diffstat (limited to 'graphics/Shader.hpp')
-rw-r--r-- | graphics/Shader.hpp | 72 |
1 files changed, 17 insertions, 55 deletions
diff --git a/graphics/Shader.hpp b/graphics/Shader.hpp index 83e06e1..8178d2a 100644 --- a/graphics/Shader.hpp +++ b/graphics/Shader.hpp @@ -1,60 +1,22 @@ -#pragma once - #include <string> +#include <fstream> +#include <sstream> +#include <iostream> -class Shader { - std::string shaderSource; - GLuint shaderId; - bool isVertex = true; - - Shader(const Shader &); - -public: - Shader(std::string fileName, bool vertex = true); - - ~Shader(); - - void bind(); - - GLuint GetId() { - return shaderId; - } +#include <GL/glew.h> -}; - -class ShaderProgram { - GLuint shaderProgram; +class Shader +{ +private: + const GLchar *vertex; + const GLchar *fragment; public: - ShaderProgram() { - shaderProgram = glCreateProgram(); - } - - ~ShaderProgram() { - glDeleteProgram(shaderProgram); - } - - void Attach(Shader &shader) { - glAttachShader(shaderProgram, shader.GetId()); - } - - void Link() { - glLinkProgram(shaderProgram); - GLint success; - GLchar infoLog[512]; - glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success); - if (!success) { - glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog); - std::cout << "Shader program linking failed: " << infoLog << std::endl; - } - glUseProgram(shaderProgram); - } - - GLuint GetId() { - return shaderProgram; - } - - explicit operator GLuint() const { - return shaderProgram; - } - + // Идентификатор программы + GLuint Program; + // Конструктор считывает и собирает шейдер + Shader(const GLchar* vertexPath, const GLchar* fragmentPath); + // Использование программы + void Use(); + + void Reload(); };
\ No newline at end of file |