]> git.tdb.fi Git - libs/gl.git/blob - source/postprocessor.cpp
Better lifecycle management of the fullscreen quad in PostProcessor
[libs/gl.git] / source / postprocessor.cpp
1 #include "mesh.h"
2 #include "meshbuilder.h"
3 #include "postprocessor.h"
4 #include "shader.h"
5
6 namespace Msp {
7 namespace GL {
8
9 WeakPtr<Mesh> PostProcessor::fullscreen_quad;
10
11 void PostProcessor::render(Renderer &, const Texture2D &color, const Texture2D &depth)
12 {
13         render(color, depth);
14 }
15
16 RefPtr<Mesh> PostProcessor::get_fullscreen_quad()
17 {
18         RefPtr<Mesh> mesh;
19         mesh = fullscreen_quad;
20         if(!mesh)
21         {
22                 mesh = new Mesh(VERTEX2);
23                 MeshBuilder builder(*mesh);
24                 builder.begin(TRIANGLE_STRIP);
25                 builder.vertex(-1, 1);
26                 builder.vertex(-1, -1);
27                 builder.vertex(1, 1);
28                 builder.vertex(1, -1);
29                 builder.end();
30                 fullscreen_quad = mesh;
31         }
32         return mesh;
33 }
34
35
36 PostProcessor::Template::Template():
37         size_divisor(1)
38 { }
39
40
41 PostProcessor::Template::Loader::Loader(Template &t):
42         DataFile::ObjectLoader<Template>(t)
43 {
44         add("size_divisor", &Template::size_divisor);
45 }
46
47 } // namespace GL
48 } // namespace Msp