X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fframebuffer.h;h=0b9af1efd167e47addd3572eff9db4e80b87d3e1;hb=641e5ebbda682a6df6f84a4627e3728dbcef3683;hp=48888459da363f7b24be4e7edd25aecbc0d00a8f;hpb=006bdb4f8660098fc524dcca80b24c943c65b249;p=libs%2Fgl.git diff --git a/source/core/framebuffer.h b/source/core/framebuffer.h index 48888459..0b9af1ef 100644 --- a/source/core/framebuffer.h +++ b/source/core/framebuffer.h @@ -3,30 +3,18 @@ #include #include "color.h" +#include "framebuffer_backend.h" #include "frameformat.h" -#include "gl.h" #include "texturecube.h" -#include -#include -#include -#include namespace Msp { namespace GL { -class Texture; class Texture2D; class Texture2DMultisample; class Texture3D; class WindowView; -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: @@ -46,10 +34,9 @@ must be attached for the framebuffer to be usable. Requires the GL_EXT_framebuffer_object extension. The blit functions require the GL_EXT_framebuffer_blit extension. */ -class Framebuffer +class Framebuffer: public FramebufferBackend { - friend class Commands; - friend class PipelineState; + friend FramebufferBackend; private: struct Attachment @@ -63,15 +50,13 @@ private: void clear(); }; - unsigned id; FrameFormat format; std::vector attachments; unsigned width; unsigned height; - mutable unsigned status; mutable unsigned dirty; - Framebuffer(unsigned); + Framebuffer(bool); public: /** Creates an empty framebuffer. Format must be set before textures can be attached. */ @@ -83,11 +68,6 @@ public: /** Creates a framebuffer and sets its format. */ Framebuffer(const FrameFormat &); -private: - void init(); -public: - ~Framebuffer(); - /** Sets the format of the framebuffer. Once the format is set, it can't be changed. */ void set_format(const FrameFormat &); @@ -124,7 +104,7 @@ public: void refresh() const { if(dirty) update(); } - void set_debug_name(const std::string &); + using FramebufferBackend::set_debug_name; static Framebuffer &system(); }; @@ -142,9 +122,6 @@ union ClearValue ClearValue(): color(0.0f, 0.0f, 0.0f, 0.0f) { } }; -inline BufferBits operator|(BufferBits a, BufferBits b) -{ return static_cast(static_cast(a)|static_cast(b)); } - } // namespace GL } // namespace Msp