]> git.tdb.fi Git - libs/gl.git/blob - source/postprocessor.cpp
Avoid some brain damage from Windows headers
[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 {
7
8 const char fullscreen_vs_source[] =
9         "attribute vec4 vertex;\n"
10         "varying vec2 texcoord;\n"
11         "void main()\n"
12         "{\n"
13         "       gl_Position = vertex;\n"
14         "       texcoord = vertex.xy*0.5+0.5;\n"
15         "}\n";
16
17 }
18
19
20 namespace Msp {
21 namespace GL {
22
23 void PostProcessor::render(Renderer &, const Texture2D &color, const Texture2D &depth)
24 {
25         render(color, depth);
26 }
27
28 Shader &PostProcessor::get_fullscreen_vertex_shader()
29 {
30         static VertexShader shader(fullscreen_vs_source);
31         return shader;
32 }
33
34 const Mesh &PostProcessor::get_fullscreen_quad()
35 {
36         static const Mesh &mesh = create_fullscreen_quad();
37         return mesh;
38 }
39
40 const Mesh &PostProcessor::create_fullscreen_quad()
41 {
42         static Mesh mesh(VERTEX2);
43         MeshBuilder builder(mesh);
44         builder.begin(TRIANGLE_STRIP);
45         builder.vertex(-1, 1);
46         builder.vertex(-1, -1);
47         builder.vertex(1, 1);
48         builder.vertex(1, -1);
49         builder.end();
50         return mesh;
51 }
52
53
54 PostProcessor::Template::Template():
55         size_divisor(1)
56 { }
57
58
59 PostProcessor::Template::Loader::Loader(Template &t):
60         DataFile::ObjectLoader<Template>(t)
61 {
62         add("size_divisor", &Template::size_divisor);
63 }
64
65 } // namespace GL
66 } // namespace Msp