X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpipeline.h;fp=source%2Fpipeline.h;h=d39bce5af9689523532412d05f3cff0eac75ec81;hb=f48b68626a98c4a0b8991764d174eb57895e805f;hp=c14245fa9d83b81c637c4fc530223db9477ea3a0;hpb=9a54442d865974ac8785988e7e740480e72ab24c;p=libs%2Fgl.git diff --git a/source/pipeline.h b/source/pipeline.h index c14245fa..d39bce5a 100644 --- a/source/pipeline.h +++ b/source/pipeline.h @@ -3,7 +3,10 @@ #include #include +#include "framebuffer.h" #include "renderable.h" +#include "renderbuffer.h" +#include "texture2d.h" namespace Msp { namespace GL { @@ -11,11 +14,8 @@ namespace GL { class Blend; class Camera; class DepthTest; -class Framebuffer; class Lighting; class PostProcessor; -class Renderbuffer; -class Texture2D; class Pipeline: public Renderable { @@ -50,6 +50,24 @@ private: Slot(const Renderable *); }; + struct RenderTarget + { + Framebuffer fbo; + Texture2D color; + Texture2D depth; + + RenderTarget(unsigned, unsigned, PixelFormat); + }; + + struct MultisampleTarget + { + Framebuffer fbo; + Renderbuffer color; + Renderbuffer depth; + + MultisampleTarget(unsigned, unsigned, unsigned, PixelFormat); + }; + typedef std::list PassList; PassList passes; @@ -60,12 +78,8 @@ private: unsigned height; bool hdr; unsigned samples; - Framebuffer *fbo; - Texture2D *color_buf; - Texture2D *depth_buf; - Framebuffer *fbo_ms; - Renderbuffer *color_buf_ms; - Renderbuffer *depth_buf_ms; + RenderTarget *target[2]; + MultisampleTarget *target_ms; public: Pipeline(unsigned, unsigned, bool = false); @@ -86,7 +100,7 @@ public: virtual void render(Renderer &, const Tag &tag = Tag()) const; private: - void create_fbos(); + void create_targets(bool); }; } // namespace GL