X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpostprocessor.cpp;h=ffc753e4b11ed658280b647e05af688ccec0039b;hb=47bfbdc8cf844aa079995fca34a3b906b49a4f66;hp=6c9408cb00db48772d361bfa8b5754338ea00c30;hpb=9733137499a84f44c29d06d2551d41a903de1112;p=libs%2Fgl.git diff --git a/source/postprocessor.cpp b/source/postprocessor.cpp index 6c9408cb..ffc753e4 100644 --- a/source/postprocessor.cpp +++ b/source/postprocessor.cpp @@ -3,45 +3,45 @@ #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() +WeakPtr PostProcessor::fullscreen_quad; + +void PostProcessor::render(Renderer &, const Texture2D &color, const Texture2D &depth) { - static VertexShader shader(fullscreen_vs_source); - return shader; + render(color, depth); } -const Mesh &PostProcessor::get_fullscreen_quad() +RefPtr PostProcessor::get_fullscreen_quad() { - static const Mesh &mesh = create_fullscreen_quad(); + RefPtr mesh; + mesh = fullscreen_quad; + if(!mesh) + { + mesh = new Mesh(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(); + fullscreen_quad = mesh; + } return mesh; } -const Mesh &PostProcessor::create_fullscreen_quad() + +PostProcessor::Template::Template(): + size_divisor(1) +{ } + + +PostProcessor::Template::Loader::Loader(Template &t): + DataFile::ObjectLoader