if(current()==this)
{
GLenum color_buf = GL_NONE;
- bool has_depth = false;
for(unsigned i=0; i<attachments.size(); ++i)
{
const Attachment &attch = attachments[i];
if(attch.type==GL_RENDERBUFFER_EXT)
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attch.attachment, GL_RENDERBUFFER_EXT, attch.rbuf->get_id());
else if(attch.type==GL_TEXTURE_2D)
+ {
+ static_cast<Texture2D *>(attch.tex)->allocate(attch.level);
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attch.attachment, attch.type, attch.tex->get_id(), attch.level);
+ }
else
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attch.attachment, 0, 0);
}
if(attch.attachment>=COLOR_ATTACHMENT0 && attch.attachment<=COLOR_ATTACHMENT3)
color_buf = attch.attachment;
- if(attch.attachment==DEPTH_ATTACHMENT)
- has_depth = true;
}
glDrawBuffer(color_buf);
- glDepthMask(has_depth);
}
else
dirty |= mask;
check_size();
}
-void Framebuffer::attach(FramebufferAttachment attch, Texture2D &tex, int level)
+void Framebuffer::attach(FramebufferAttachment attch, Texture2D &tex, unsigned level)
{
if(!id)
throw InvalidState("Can't attach to system framebuffer");
level = 0;
}
-void Framebuffer::Attachment::set(Texture &t, int l)
+void Framebuffer::Attachment::set(Texture &t, unsigned l)
{
type = t.get_target();
tex = &t;