class Mesh;
class Renderer;
class Sampler;
-class Shader;
class Texture2D;
/**
-Base class for post-processing effects. Post-processors receive the contents
-of the entire framebuffer as a texture and render it back, altering it in the
-process.
+Base class for post-processing effects.
+
+PostProcessors can be added to a Sequence. They receive the contents of the
+entire framebuffer as a texture and render it back, altering it in the process.
*/
class PostProcessor
{
public:
+ /**
+ Holds the parameters for a PostProcessor. Used with SequenceTemplate.
+ */
struct Template
{
class Loader: public Msp::DataFile::ObjectLoader<Template>
Loader(Template &);
};
- unsigned size_divisor;
+ unsigned size_divisor = 1;
- Template();
- virtual ~Template() { }
+ virtual ~Template() = default;
virtual PostProcessor *create(unsigned, unsigned) const = 0;
};
-private:
- static WeakPtr<Mesh> fullscreen_quad;
- static WeakPtr<Sampler> nearest_sampler;
- static WeakPtr<Sampler> linear_sampler;
-
protected:
PostProcessor() { }
public:
virtual ~PostProcessor() { }
- /// Renders the effect.
- virtual void render(const Texture2D &, const Texture2D &) { }
-
- virtual void render(Renderer &, const Texture2D &, const Texture2D &);
-
-protected:
- /** Returns a mesh consisting of a single quad, covering the entire screen.
- The vertices are in normalized device coordinates. */
- static RefPtr<Mesh> get_fullscreen_quad();
+ virtual void render(Renderer &, const Texture2D &, const Texture2D &) = 0;
- static RefPtr<Sampler> get_nearest_sampler();
- static RefPtr<Sampler> get_linear_sampler();
+ virtual void set_debug_name(const std::string &) = 0;
};
} // namespace GL