]> git.tdb.fi Git - libs/gl.git/blobdiff - source/postprocessor.cpp
Helper functions for post-processors
[libs/gl.git] / source / postprocessor.cpp
diff --git a/source/postprocessor.cpp b/source/postprocessor.cpp
new file mode 100644 (file)
index 0000000..add8b1e
--- /dev/null
@@ -0,0 +1,48 @@
+#include "mesh.h"
+#include "meshbuilder.h"
+#include "postprocessor.h"
+#include "shader.h"
+
+namespace {
+
+const char fullscreen_vs_source[] =
+       "varying vec2 texcoord;\n"
+       "void main()\n"
+       "{\n"
+       "       gl_Position = gl_Vertex;\n"
+       "       texcoord = gl_Vertex.xy*0.5+0.5;\n"
+       "}\n";
+
+}
+
+
+namespace Msp {
+namespace GL {
+
+Shader &PostProcessor::get_fullscreen_vertex_shader()
+{
+       static Shader shader(VERTEX_SHADER, fullscreen_vs_source);
+       return shader;
+}
+
+const Mesh &PostProcessor::get_fullscreen_quad()
+{
+       static const Mesh &mesh = create_fullscreen_quad();
+       return mesh;
+}
+
+const Mesh &PostProcessor::create_fullscreen_quad()
+{
+       static Mesh mesh(GL::VERTEX2);
+       MeshBuilder builder(mesh);
+       builder.begin(TRIANGLE_STRIP);
+       builder.vertex(-1, 1);
+       builder.vertex(-1, -1);
+       builder.vertex(1, 1);
+       builder.vertex(1, -1);
+       builder.end();
+       return mesh;
+}
+
+} // namespace GL
+} // namespace Msp