X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fsequence.h;h=efead27f98e9fcc45490ba5dffff351666c598f9;hb=00dc5da40385d41c3a50c34c75353b257e814035;hp=cfd14942e9de044bd5e33af8dc99e43470caf96d;hpb=006bdb4f8660098fc524dcca80b24c943c65b249;p=libs%2Fgl.git diff --git a/source/render/sequence.h b/source/render/sequence.h index cfd14942..efead27f 100644 --- a/source/render/sequence.h +++ b/source/render/sequence.h @@ -1,33 +1,28 @@ #ifndef MSP_GL_SEQUENCE_H_ #define MSP_GL_SEQUENCE_H_ -#include -#include +#include #include "blend.h" #include "depthtest.h" -#include "framebuffer.h" +#include "frameformat.h" #include "renderable.h" -#include "rendertarget.h" #include "stenciltest.h" -#include "texture2d.h" namespace Msp { namespace GL { -class Blend; -class Camera; -class Clipping; class Lighting; class PostProcessor; +class RenderTarget; /** Top-level content class. Typically a Sequence is used as the content Renderable for a View or effects such as ShadowMap or EnvironmentMap. A Sequence consists of a number of steps. Each step is defined with a -Renderable and a tag to render it with and may also have Lighting, Clipping, -DepthTest and Blend states. Scenes can be used to further organize Renderables -within a step. +Renderable and a tag to render it with and may also have Lighting, DepthTest +and Blend states. Scenes can be used to further organize Renderables within a +step. PostProcessors can be applied after all of the steps in the Sequence have been processed. Framebuffer objects are automatically used to pass render results @@ -45,7 +40,6 @@ public: DepthTest depth_test; StencilTest stencil_test; Blend blend; - const Clipping *clipping; Renderable *renderable; public: @@ -57,12 +51,10 @@ public: void set_depth_test(const DepthTest &); void set_stencil_test(const StencilTest &); void set_blend(const Blend &); - void set_clipping(const Clipping *); const Lighting *get_lighting() const { return lighting; } const DepthTest &get_depth_test() const { return depth_test; } const StencilTest &get_stencil_test() const { return stencil_test; } const Blend &get_blend() const { return blend; } - const Clipping *get_clipping() const { return clipping; } Renderable *get_renderable() const { return renderable; } }; @@ -77,18 +69,20 @@ private: std::vector steps; std::vector postproc; - unsigned width; - unsigned height; + unsigned width = 0; + unsigned height = 0; FrameFormat target_format; - RenderTarget *target[2]; - RenderTarget *target_ms; - bool clear_enabled; + RenderTarget *target[2] = { 0, 0 }; + RenderTarget *target_ms = 0; + bool clear_enabled = false; std::vector clear_colors; - float clear_depth; - int clear_stencil; + float clear_depth = 1.0f; + int clear_stencil = 0; + + static Tag noclear_tag; public: - Sequence(); + Sequence() = default; Sequence(unsigned, unsigned, const FrameFormat &); ~Sequence();