X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexturing.cpp;h=77bb15435c7391a62a0298ea653f6699417eb55f;hp=1c8410c57a6bff3ee9388805964a1cca0876981c;hb=ca52c492bd4f2fa1a1db3a85e50eaf7c43474830;hpb=6fd9b09f47ff6a07bd5ca7f9e8887db3486bfcb1 diff --git a/source/texturing.cpp b/source/texturing.cpp index 1c8410c5..77bb1543 100644 --- a/source/texturing.cpp +++ b/source/texturing.cpp @@ -1,4 +1,3 @@ -#include "texenv.h" #include "texture.h" #include "texturing.h" #include "texunit.h" @@ -8,6 +7,8 @@ using namespace std; namespace Msp { namespace GL { +bool Texturing::legacy_used = true; + Texturing::~Texturing() { if(current()==this) @@ -16,20 +17,15 @@ Texturing::~Texturing() void Texturing::attach(unsigned attch, const Texture &tex) { - set_attachment(attch, &tex, 0); -} - -void Texturing::attach(unsigned attch, const Texture &tex, const TexEnv &env) -{ - set_attachment(attch, &tex, &env); + set_attachment(attch, &tex); } void Texturing::detach(unsigned attch) { - set_attachment(attch, 0, 0); + set_attachment(attch, 0); } -void Texturing::set_attachment(unsigned attch, const Texture *tex, const TexEnv *env) +void Texturing::set_attachment(unsigned attch, const Texture *tex) { if(attch>=TexUnit::get_n_units()) throw out_of_range("Texturing::set_attachment"); @@ -37,39 +33,38 @@ void Texturing::set_attachment(unsigned attch, const Texture *tex, const TexEnv if(attachments.size()<=attch) attachments.resize(attch+1); - attachments[attch].tex = tex; - attachments[attch].env = env; + attachments[attch] = tex; if(current()==this) - bind_attachment(attch); + bind_attachment(attch, legacy_used); +} + +const Texture *Texturing::get_attached_texture(unsigned i) const +{ + return ibind_to(i); + if(const Texture *tex = attachments[i]) + tex->bind_to(i, legacy); else Texture::unbind_from(i); - if(attch.env) - attch.env->bind_to(i); - else - TexEnv::unbind_from(i); } void Texturing::unbind_attachment(unsigned i) { Texture::unbind_from(i); - TexEnv::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; iattachments.size(); ++i) @@ -88,11 +83,5 @@ void Texturing::unbind() } } - -Texturing::Attachment::Attachment(): - tex(0), - env(0) -{ } - } // namespace GL } // namespace Msp;