X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fprogram.cpp;h=1f28e9565e19905e1770bce0de872621b25225f7;hb=12ac9bec8e03029c1042fd7732a2cfc04c9a9584;hp=ef1f4c8a63fc0696f363bf21e10b60cb8fe4b80f;hpb=b617c5d7b5283ad260a77f01e42e6170cabbc03d;p=libs%2Fgl.git diff --git a/source/program.cpp b/source/program.cpp index ef1f4c8a..1f28e956 100644 --- a/source/program.cpp +++ b/source/program.cpp @@ -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(p)