+++ /dev/null
-#ifndef MSP_GL_POSTPROCESSOR_H_
-#define MSP_GL_POSTPROCESSOR_H_
-
-#include <msp/datafile/objectloader.h>
-
-namespace Msp {
-namespace GL {
-
-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.
-*/
-class PostProcessor
-{
-public:
- struct Template
- {
- class Loader: public Msp::DataFile::ObjectLoader<Template>
- {
- public:
- Loader(Template &);
- };
-
- unsigned size_divisor;
-
- Template();
- virtual ~Template() { }
-
- 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();
-
- static RefPtr<Sampler> get_nearest_sampler();
- static RefPtr<Sampler> get_linear_sampler();
-};
-
-} // namespace GL
-} // namespace Msp
-
-#endif