will let us cache shaders.legacy
@@ -44,6 +44,16 @@ private: | |||||
* Public Shader class | * Public Shader class | ||||
*/ | */ | ||||
Shader *Shader::Create(char const *vert, char const *frag) | |||||
{ | |||||
return new Shader(vert, frag); | |||||
} | |||||
void Shader::Destroy(Shader *shader) | |||||
{ | |||||
delete shader; | |||||
} | |||||
Shader::Shader(char const *vert, char const *frag) | Shader::Shader(char const *vert, char const *frag) | ||||
: data(new ShaderData()) | : data(new ShaderData()) | ||||
{ | { | ||||
@@ -76,7 +86,7 @@ Shader::Shader(char const *vert, char const *frag) | |||||
int Shader::GetAttribLocation(char const *attr) const | int Shader::GetAttribLocation(char const *attr) const | ||||
{ | { | ||||
return glGetAttribLocation(data->prog_id, attr); | return glGetAttribLocation(data->prog_id, attr); | ||||
} | } | ||||
int Shader::GetUniformLocation(char const *uni) const | int Shader::GetUniformLocation(char const *uni) const | ||||
@@ -10,7 +10,7 @@ | |||||
// | // | ||||
// The Shader class | // The Shader class | ||||
// -------------- | // ---------------- | ||||
// | // | ||||
#if !defined __DH_SHADER_H__ | #if !defined __DH_SHADER_H__ | ||||
@@ -21,14 +21,18 @@ class ShaderData; | |||||
class Shader | class Shader | ||||
{ | { | ||||
public: | public: | ||||
Shader(char const *vert, char const *frag); | static Shader *Create(char const *vert, char const *frag); | ||||
~Shader(); | static void Destroy(Shader *shader); | ||||
int GetAttribLocation(char const *attr) const; | int GetAttribLocation(char const *attr) const; | ||||
int GetUniformLocation(char const *uni) const; | int GetUniformLocation(char const *uni) const; | ||||
void Bind() const; | void Bind() const; | ||||
protected: | |||||
Shader(char const *vert, char const *frag); | |||||
~Shader(); | |||||
private: | private: | ||||
ShaderData *data; | ShaderData *data; | ||||
}; | }; | ||||
@@ -85,7 +85,7 @@ void Video::Setup(int width, int height) | |||||
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); | glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); | ||||
#if LOL_EXPERIMENTAL | #if LOL_EXPERIMENTAL | ||||
stdshader = new Shader(vertexshader, fragmentshader); | stdshader = Shader::Create(vertexshader, fragmentshader); | ||||
#endif | #endif | ||||
} | } | ||||
@@ -168,7 +168,7 @@ void Video::Clear() | |||||
void Video::Destroy() | void Video::Destroy() | ||||
{ | { | ||||
#if LOL_EXPERIMENTAL | #if LOL_EXPERIMENTAL | ||||
delete stdshader; | Shader::Destroy(stdshader); | ||||
#endif | #endif | ||||
} | } | ||||