]> git.tdb.fi Git - libs/gl.git/blob - source/effects/postprocessor.h
Add debug name capability to more classes
[libs/gl.git] / source / effects / postprocessor.h
1 #ifndef MSP_GL_POSTPROCESSOR_H_
2 #define MSP_GL_POSTPROCESSOR_H_
3
4 #include <msp/datafile/objectloader.h>
5
6 namespace Msp {
7 namespace GL {
8
9 class Mesh;
10 class Renderer;
11 class Sampler;
12 class Shader;
13 class Texture2D;
14
15 /**
16 Base class for post-processing effects.  Post-processors receive the contents
17 of the entire framebuffer as a texture and render it back, altering it in the
18 process.
19 */
20 class PostProcessor
21 {
22 public:
23         struct Template
24         {
25                 class Loader: public Msp::DataFile::ObjectLoader<Template>
26                 {
27                 public:
28                         Loader(Template &);
29                 };
30
31                 unsigned size_divisor;
32
33                 Template();
34                 virtual ~Template() { }
35
36                 virtual PostProcessor *create(unsigned, unsigned) const = 0;
37         };
38
39 protected:
40         PostProcessor() { }
41 public:
42         virtual ~PostProcessor() { }
43
44         /// Renders the effect.
45         virtual void render(const Texture2D &, const Texture2D &) { }
46
47         virtual void render(Renderer &, const Texture2D &, const Texture2D &);
48
49         virtual void set_debug_name(const std::string &) = 0;
50 };
51
52 } // namespace GL
53 } // namespace Msp
54
55 #endif