]> git.tdb.fi Git - libs/gl.git/blobdiff - source/program.cpp
Bind ProgramData to a Program upon construction
[libs/gl.git] / source / program.cpp
index b3773a6359a8d576cea5664814c48e685dc6608d..1f28e9565e19905e1770bce0de872621b25225f7 100644 (file)
@@ -38,8 +38,8 @@ void Program::init()
 {
        static RequireExtension _ext("GL_ARB_shader_objects");
 
-       linked=false;
-       id=glCreateProgramObjectARB();
+       linked = false;
+       id = glCreateProgramObjectARB();
 }
 
 Program::~Program()
@@ -63,7 +63,7 @@ void Program::attach_shader(Shader &shader)
 
 void Program::detach_shader(Shader &shader)
 {
-       list<Shader *>::iterator i=remove(shaders.begin(), shaders.end(), &shader);
+       list<Shader *>::iterator i = remove(shaders.begin(), shaders.end(), &shader);
        if(i!=shaders.end())
        {
                shaders.erase(i, shaders.end());
@@ -73,7 +73,7 @@ void Program::detach_shader(Shader &shader)
 
 void Program::set_del_shaders(bool ds)
 {
-       del_shaders=ds;
+       del_shaders = ds;
 }
 
 void Program::bind_attribute(unsigned index, const string &name)
@@ -89,7 +89,7 @@ void Program::link()
                        (*i)->compile();
 
        glLinkProgramARB(id);
-       if(!(linked=get_param(GL_LINK_STATUS)))
+       if(!(linked = get_param(GL_LINK_STATUS)))
                throw CompileError(get_info_log());
 }
 
@@ -102,7 +102,7 @@ int Program::get_param(GLenum param) const
 
 string Program::get_info_log() const
 {
-       GLsizei len=get_param(GL_INFO_LOG_LENGTH);
+       GLsizei len = get_param(GL_INFO_LOG_LENGTH);
        char log[len+1];
        glGetInfoLogARB(id, len+1, &len, log);
        return string(log, len);
@@ -113,8 +113,10 @@ void Program::bind() const
        if(!linked)
                throw InvalidState("Program is not linked");
 
+       if(!set_current(this))
+               return;
+
        glUseProgramObjectARB(id);
-       cur_prog=this;
 }
 
 int Program::get_uniform_location(const string &n) const
@@ -124,21 +126,12 @@ int Program::get_uniform_location(const string &n) const
 
 void Program::unbind()
 {
-       if(cur_prog)
-       {
-               glUseProgramObjectARB(0);
-               cur_prog=0;
-       }
-}
+       if(!set_current(0))
+               return;
 
-void Program::maybe_bind()
-{
-       if(cur_prog!=this)
-               bind();
+       glUseProgramObjectARB(0);
 }
 
-const Program *Program::cur_prog=0;
-
 
 Program::Loader::Loader(Program &p):
        DataFile::ObjectLoader<Program>(p)