--- /dev/null
+#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