#include "error.h"
-#include "extension.h"
#include "ext_framebuffer_blit.h"
#include "ext_framebuffer_object.h"
#include "framebuffer.h"
height(0),
dirty(0)
{
- static RequireExtension _ext("GL_EXT_framebuffer_object");
+ static Require _req(EXT_framebuffer_object);
- glGenFramebuffersEXT(1, &id);
+ glGenFramebuffers(1, &id);
}
Framebuffer::~Framebuffer()
{
if(id)
- glDeleteFramebuffersEXT(1, &id);
+ glDeleteFramebuffers(1, &id);
if(current()==this)
unbind();
}
const Attachment &attch = attachments[i];
if(mask&(1<<i))
{
- if(attch.type==GL_RENDERBUFFER_EXT)
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attch.attachment, GL_RENDERBUFFER_EXT, attch.rbuf->get_id());
+ if(attch.type==GL_RENDERBUFFER)
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, attch.attachment, GL_RENDERBUFFER, 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);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, attch.attachment, attch.type, attch.tex->get_id(), attch.level);
}
else if(attch.type==GL_TEXTURE_CUBE_MAP)
{
static_cast<TextureCube *>(attch.tex)->allocate(attch.level);
- glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, attch.attachment, attch.cube_face, attch.tex->get_id(), attch.level);
+ glFramebufferTexture2D(GL_FRAMEBUFFER, attch.attachment, attch.cube_face, attch.tex->get_id(), attch.level);
}
else
- glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, attch.attachment, 0, 0);
+ glFramebufferRenderbuffer(GL_FRAMEBUFFER, attch.attachment, 0, 0);
}
if(attch.attachment>=COLOR_ATTACHMENT0 && attch.attachment<=COLOR_ATTACHMENT3)
for(vector<Attachment>::iterator i=attachments.begin(); i!=attachments.end(); ++i)
if(i->type)
{
- if(i->type==GL_RENDERBUFFER_EXT)
+ if(i->type==GL_RENDERBUFFER)
{
width = i->rbuf->get_width();
height = i->rbuf->get_height();
}
}
+unsigned Framebuffer::get_attachment_index(FramebufferAttachment attch)
+{
+ for(unsigned i=0; i<attachments.size(); ++i)
+ if(attachments[i].attachment==attch)
+ return i;
+ attachments.push_back(Attachment(attch));
+ return attachments.size()-1;
+}
+
void Framebuffer::attach(FramebufferAttachment attch, Renderbuffer &rbuf)
{
if(!id)
FramebufferStatus Framebuffer::check_status() const
{
Bind _bind(this, true);
- return static_cast<FramebufferStatus>(glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT));
+ return static_cast<FramebufferStatus>(glCheckFramebufferStatus(GL_FRAMEBUFFER));
}
void Framebuffer::clear(BufferBits bits)
void Framebuffer::blit_from(const Framebuffer &other, int sx0, int sy0, int sx1, int sy1, int dx0, int dy0, int dx1, int dy1, BufferBits bits, bool filter)
{
- static RequireExtension _ext("GL_EXT_framebuffer_blit");
+ static Require _req(EXT_framebuffer_blit);
const Framebuffer *old = current();
if(set_current(this))
{
- glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, id);
+ glBindFramebuffer(GL_DRAW_FRAMEBUFFER, id);
if(dirty)
{
update_attachment(dirty);
}
}
if(old!=&other)
- glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, other.id);
+ glBindFramebuffer(GL_READ_FRAMEBUFFER, other.id);
- glBlitFramebufferEXT(sx0, sy0, sx1, sy1, dx0, dy0, dx1, dy1, bits, (filter ? GL_LINEAR : GL_NEAREST));
+ glBlitFramebuffer(sx0, sy0, sx1, sy1, dx0, dy0, dx1, dy1, bits, (filter ? GL_LINEAR : GL_NEAREST));
set_current(old);
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, (old ? old->id : 0));
+ glBindFramebuffer(GL_FRAMEBUFFER, (old ? old->id : 0));
}
void Framebuffer::blit_from(const Framebuffer &other, int sx, int sy, unsigned wd, unsigned ht, int dx, int dy, BufferBits bits)
{
if(set_current(this))
{
- glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, id);
+ glBindFramebuffer(GL_FRAMEBUFFER, id);
if(dirty)
{
update_attachment(dirty);
return sys_framebuf;
}
-unsigned Framebuffer::get_attachment_index(FramebufferAttachment attch)
-{
- for(unsigned i=0; i<attachments.size(); ++i)
- if(attachments[i].attachment==attch)
- return i;
- attachments.push_back(Attachment(attch));
- return attachments.size()-1;
-}
-
Framebuffer::Attachment::Attachment(FramebufferAttachment a):
attachment(a),
void Framebuffer::Attachment::set(Renderbuffer &r)
{
- type = GL_RENDERBUFFER_EXT;
+ type = GL_RENDERBUFFER;
rbuf = &r;
level = 0;
}