X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fsequence.h;h=cc4b6963b017ce98b2250597d2f02c8c55f67988;hb=38712d8ecc57d043a2419ffbaeeb57f7a6586f14;hp=f862bbcb55914b229ff1d4d2e756e1fc0809e6c8;hpb=73590a7fcd931261d2b9c26fd3a0e53a37aa6e2c;p=libs%2Fgl.git diff --git a/source/render/sequence.h b/source/render/sequence.h index f862bbcb..cc4b6963 100644 --- a/source/render/sequence.h +++ b/source/render/sequence.h @@ -1,25 +1,20 @@ #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 View; +class RenderTarget; /** Top-level content class. Typically a Sequence is used as the content @@ -78,38 +73,29 @@ private: std::vector steps; std::vector postproc; - unsigned width; - unsigned height; - bool hdr; - bool alpha; - unsigned samples; - RenderTarget *target[2]; - RenderTarget *target_ms; - std::string debug_name; + unsigned width = 0; + unsigned height = 0; + FrameFormat target_format; + RenderTarget *target[2] = { 0, 0 }; + RenderTarget *target_ms = 0; + bool clear_enabled = false; + std::vector clear_colors; + float clear_depth = 1.0f; + int clear_stencil = 0; public: - Sequence(unsigned, unsigned, bool = false); - Sequence(const View &); - Sequence(const Framebuffer &); -private: - void init(unsigned, unsigned); -public: + Sequence() = default; + Sequence(unsigned, unsigned, const FrameFormat &); ~Sequence(); - /* Sets high dynamic range mode. Requires floating-point texture support. - A ColorCurve postprocessor is recommended for full benefit. */ - void set_hdr(bool); - - /* Enable or disable alpha channel. When enabled, all render targets are - created with an RGBA pixel format instead of RGB. */ - void set_alpha(bool); - - void set_multisample(unsigned); - unsigned get_width() const { return width; } unsigned get_height() const { return height; } - bool get_hdr() const { return hdr; } - unsigned get_multisample() const { return samples; } + const FrameFormat &get_target_format() { return target_format; } + + void set_clear_enabled(bool); + void set_clear_colors(const std::vector &); + void set_clear_depth(float); + void set_clear_stencil(int); /** Adds a step to the sequence. It's permissible to add the same Renderable multiple times. */ @@ -132,13 +118,7 @@ public: virtual void render(Renderer &, Tag tag = Tag()) const; -private: - void create_targets(unsigned); - -public: void set_debug_name(const std::string &); -private: - void set_target_debug_names(); }; } // namespace GL