]> git.tdb.fi Git - libs/gl.git/blobdiff - source/texturing.cpp
Bind textures in the modern way when shaders are used
[libs/gl.git] / source / texturing.cpp
index dff3757fdb6d9b8985234e87241153d94b41a80b..77bb15435c7391a62a0298ea653f6699417eb55f 100644 (file)
@@ -7,6 +7,8 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
+bool Texturing::legacy_used = true;
+
 Texturing::~Texturing()
 {
        if(current()==this)
@@ -34,7 +36,7 @@ void Texturing::set_attachment(unsigned attch, const Texture *tex)
        attachments[attch] = tex;
 
        if(current()==this)
-               bind_attachment(attch);
+               bind_attachment(attch, legacy_used);
 }
 
 const Texture *Texturing::get_attached_texture(unsigned i) const
@@ -42,10 +44,10 @@ const Texture *Texturing::get_attached_texture(unsigned i) const
        return i<attachments.size() ? attachments[i] : 0;
 }
 
-void Texturing::bind_attachment(unsigned i) const
+void Texturing::bind_attachment(unsigned i, bool legacy) const
 {
        if(const Texture *tex = attachments[i])
-               tex->bind_to(i);
+               tex->bind_to(i, legacy);
        else
                Texture::unbind_from(i);
 }
@@ -55,13 +57,14 @@ void Texturing::unbind_attachment(unsigned i)
        Texture::unbind_from(i);
 }
 
-void Texturing::bind() const
+void Texturing::bind(bool legacy) const
 {
        const Texturing *old = current();
-       if(set_current(this))
+       if(set_current(this) || legacy!=legacy_used)
        {
+               legacy_used = legacy;
                for(unsigned i=0; i<attachments.size(); ++i)
-                       bind_attachment(i);
+                       bind_attachment(i, legacy);
                if(old)
                {
                        for(unsigned i=attachments.size(); i<old->attachments.size(); ++i)