X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fcore%2Fframebuffer.h;h=e370b7c7f38976c2211c496c4c6c5e640f835e07;hb=f438142c7589df7480aa640cf62b7a2c3d48bab2;hp=a58d31d890927f0a59261169748554b24c49c29b;hpb=81051dd218aa70cf434358de9a993d5358a8a5e1;p=libs%2Fgl.git diff --git a/source/core/framebuffer.h b/source/core/framebuffer.h index a58d31d8..e370b7c7 100644 --- a/source/core/framebuffer.h +++ b/source/core/framebuffer.h @@ -3,17 +3,13 @@ #include #include "color.h" +#include "framebuffer_backend.h" #include "frameformat.h" #include "texturecube.h" -#include -#include -#include -#include namespace Msp { namespace GL { -class Texture; class Texture2D; class Texture2DMultisample; class Texture3D; @@ -38,32 +34,28 @@ 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 { - Texture *tex; - unsigned level; - int layer; + Texture *tex = 0; + unsigned level = 0; + int layer = 0; - Attachment(); void set(Texture &, unsigned, int); 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. */ @@ -75,11 +67,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 &); @@ -116,7 +103,7 @@ public: void refresh() const { if(dirty) update(); } - void set_debug_name(const std::string &); + using FramebufferBackend::set_debug_name; static Framebuffer &system(); };