]> git.tdb.fi Git - libs/gl.git/blobdiff - source/postprocessor.h
Remove the deprecated ProgramBuilder class
[libs/gl.git] / source / postprocessor.h
index 15cdc271149265e171da1b2cdf4ef6ce6a3b842d..c107d885f658e028522fdb0fe463bbd755d60d1d 100644 (file)
@@ -1,11 +1,14 @@
 #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;
 
@@ -16,6 +19,28 @@ 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:
@@ -27,20 +52,12 @@ public:
        virtual void render(Renderer &, const Texture2D &, const Texture2D &);
 
 protected:
-       /** Returns a vertex shader suitable for rendering a full-screen quad.
-       Input vertices are assumed to be in normalized device coordinates; no
-       transform is performed.  The shader provides a varying vec2 texcoord for
-       a fragment shader to access textures.
-       
-       Deprecated in favor of the builtin postprocess.glsl module. */
-       static Shader &get_fullscreen_vertex_shader();
-
        /** Returns a mesh consisting of a single quad, covering the entire screen.
        The vertices are in normalized device coordinates. */
-       static const Mesh &get_fullscreen_quad();
+       static RefPtr<Mesh> get_fullscreen_quad();
 
-private:
-       static const Mesh &create_fullscreen_quad();
+       static RefPtr<Sampler> get_nearest_sampler();
+       static RefPtr<Sampler> get_linear_sampler();
 };
 
 } // namespace GL