+++ /dev/null
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2007 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
-#ifndef MSP_GL_FRAMEBUFFER_H_
-#define MSP_GL_FRAMEBUFFER_H_
-
-#include "gl.h"
-#include "types.h"
-
-namespace Msp {
-namespace GL {
-
-class Renderbuffer;
-class Texture2D;
-
-enum FramebufferAttachment
-{
- COLOR_ATTACHMENT0 = GL_COLOR_ATTACHMENT0_EXT,
- COLOR_ATTACHMENT1 = GL_COLOR_ATTACHMENT1_EXT,
- COLOR_ATTACHMENT2 = GL_COLOR_ATTACHMENT2_EXT,
- COLOR_ATTACHMENT3 = GL_COLOR_ATTACHMENT3_EXT,
- DEPTH_ATTACHMENT = GL_DEPTH_ATTACHMENT_EXT,
- STENCIL_ATTACHMENT = GL_STENCIL_ATTACHMENT_EXT
-};
-
-enum FramebufferStatus
-{
- FRAMEBUFFER_INCOMPLETE_ATTACHMENT = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT,
- FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT,
- FRAMEBUFFER_INCOMPLETE_DIMENSIONS = GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT,
- FRAMEBUFFER_INCOMPLETE_FORMATS = GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT,
- FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER = GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT,
- FRAMEBUFFER_INCOMPLETE_READ_BUFFER = GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT,
- FRAMEBUFFER_UNSUPPORTED = GL_FRAMEBUFFER_UNSUPPORTED_EXT,
- FRAMEBUFFER_COMPLETE = GL_FRAMEBUFFER_COMPLETE_EXT
-};
-
-/**
-Framebuffer objects can be used to perform offscreen rendering. The most
-common application is rendering to a texture, which can then be used for
-fullscreen shader effects.
-
-A framebuffer consist of a number of logical buffers, such as color and depth
-buffers. Renderbuffers and Textures can be attached to the logical buffers. At
-least one image must be attached for the framebuffer to be usable.
-
-Requires the GL_EXT_framebuffer_object extension.
-*/
-class Framebuffer
-{
-private:
- uint id;
-
- static const Framebuffer *cur_fbo;
-
-public:
- Framebuffer();
- ~Framebuffer();
-
- void bind() const;
-
- void attach(FramebufferAttachment attch, Renderbuffer &rbuf);
- void attach(FramebufferAttachment attch, Texture2D &tex, int level);
-
- /**
- Checks the completeness status of the framebuffer. Returns
- FRAMEBUFFER_COMPLETE if the framebuffer is complate and can be rendered to,
- or one of the error status codes otherwise.
- */
- FramebufferStatus check_status() const;
-
- static const Framebuffer *current();
- static void unbind();
-private:
- void maybe_bind() const;
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif