shader class has improved ownership handling stuff garbage thingies

This commit is contained in:
Robert 2021-01-21 01:00:42 +01:00
parent d9cd0f19cb
commit 4fe91a12e2
3 changed files with 101 additions and 83 deletions

View file

@ -1,6 +1,7 @@
#ifndef SHADER_HPP
#define SHADER_HPP
#include <memory>
#include <core.hpp>
#include <glad/glad.h>
@ -8,11 +9,12 @@ namespace oglu
{
class Color;
class OGLU_API Shader
class OGLU_API AbstractShader
{
public:
Shader(const char* vertexShaderFile, const char* fragmentShaderFile);
~Shader();
friend std::shared_ptr<AbstractShader> OGLU_API MakeShader(const char* vertexShaderFile, const char* fragmentShaderFile);
AbstractShader(const AbstractShader& other);
~AbstractShader();
void Use();
@ -123,11 +125,15 @@ namespace oglu
#pragma endregion Uniforms
private:
AbstractShader(const char* vertexShaderFile, const char* fragmentShaderFile);
void LoadShaderSource(const char* filename, char** buffer);
private:
GLuint vertexShader, fragmentShader, program;
GLuint program;
};
typedef std::shared_ptr<AbstractShader> Shader;
}
#endif