-#include "texenv.h"
#include "texture.h"
#include "texturing.h"
#include "texunit.h"
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");
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);
}
+const Texture *Texturing::get_attached_texture(unsigned i) const
+{
+ return i<attachments.size() ? attachments[i] : 0;
+}
+
void Texturing::bind_attachment(unsigned i) const
{
- const Attachment &attch = attachments[i];
- TexUnit::activate(i);
- if(attch.tex)
- attch.tex->bind();
- else
- Texture::unbind();
- if(attch.env)
- attch.env->bind();
+ if(const Texture *tex = attachments[i])
+ tex->bind_to(i);
else
- TexEnv::unbind();
+ Texture::unbind_from(i);
}
void Texturing::unbind_attachment(unsigned i)
{
- TexUnit::activate(i);
- Texture::unbind();
- TexEnv::unbind();
+ Texture::unbind_from(i);
}
void Texturing::bind() const
}
}
-
-Texturing::Attachment::Attachment():
- tex(0),
- env(0)
-{ }
-
} // namespace GL
} // namespace Msp;