X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fframebuffer.h;h=89407e8ba69b270bcc4f707eed89dc81a6b52028;hb=24b24e2203c776aacd9744bb947f5cf47b03d328;hp=2f867e6c591ec69706df22fc2a90bbeef52575f8;hpb=2e09b4f72f06537431151fe8b2574e1aa886ad48;p=libs%2Fgl.git diff --git a/source/core/framebuffer.h b/source/core/framebuffer.h index 2f867e6c..89407e8b 100644 --- a/source/core/framebuffer.h +++ b/source/core/framebuffer.h @@ -2,13 +2,9 @@ #define MSP_GL_FRAMEBUFFER_H_ #include +#include "color.h" #include "frameformat.h" -#include "gl.h" #include "texturecube.h" -#include -#include -#include -#include namespace Msp { namespace GL { @@ -19,32 +15,10 @@ class Texture2DMultisample; class Texture3D; class WindowView; -enum FramebufferStatus -{ - FRAMEBUFFER_INCOMPLETE_ATTACHMENT = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT, - FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT, - 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, - FRAMEBUFFER_INCOMPLETE_READ_BUFFER = GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER, - FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, - FRAMEBUFFER_INCOMPLETE_LAYER_COUNT = GL_FRAMEBUFFER_INCOMPLETE_LAYER_COUNT_ARB, - FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS = GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS, - FRAMEBUFFER_UNSUPPORTED = GL_FRAMEBUFFER_UNSUPPORTED, - FRAMEBUFFER_COMPLETE = GL_FRAMEBUFFER_COMPLETE -}; - -enum BufferBits -{ - COLOR_BUFFER_BIT = GL_COLOR_BUFFER_BIT, - DEPTH_BUFFER_BIT = GL_DEPTH_BUFFER_BIT, - STENCIL_BUFFER_BIT = GL_STENCIL_BUFFER_BIT -}; - class framebuffer_incomplete: public std::runtime_error { public: - framebuffer_incomplete(FramebufferStatus); + framebuffer_incomplete(const std::string &); virtual ~framebuffer_incomplete() throw() { } }; @@ -82,7 +56,7 @@ private: std::vector attachments; unsigned width; unsigned height; - mutable FramebufferStatus status; + mutable unsigned status; mutable unsigned dirty; Framebuffer(unsigned); @@ -132,10 +106,6 @@ public: void resize(const WindowView &); - /** Returns FRAMEBUFFER_COMPLETE if the framebuffer is complete and can be - rendered to, or one of the error status codes otherwise. */ - FramebufferStatus get_status() const { return status; } - /** Ensures that the framebuffer is complete, throwing an exception if it isn't. */ void require_complete() const; @@ -147,8 +117,18 @@ public: static Framebuffer &system(); }; -inline BufferBits operator|(BufferBits a, BufferBits b) -{ return static_cast(static_cast(a)|static_cast(b)); } + +union ClearValue +{ + Color color; + struct + { + float depth; + int stencil; + } depth_stencil; + + ClearValue(): color(0.0f, 0.0f, 0.0f, 0.0f) { } +}; } // namespace GL } // namespace Msp