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); | |||||
~Shader(); | |||||
static Shader *Create(char const *vert, char const *frag); | |||||
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 | ||||
} | } | ||||