X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fpostprocessor.cpp;h=ffc753e4b11ed658280b647e05af688ccec0039b;hb=47bfbdc8cf844aa079995fca34a3b906b49a4f66;hp=f67bf4cf701407feb086ddb45669394d51c7ff4b;hpb=df20a7e137542a4156cc5ffa8118d59de6b68547;p=libs%2Fgl.git diff --git a/source/postprocessor.cpp b/source/postprocessor.cpp index f67bf4cf..ffc753e4 100644 --- a/source/postprocessor.cpp +++ b/source/postprocessor.cpp @@ -6,27 +6,29 @@ namespace Msp { namespace GL { +WeakPtr PostProcessor::fullscreen_quad; + void PostProcessor::render(Renderer &, const Texture2D &color, const Texture2D &depth) { render(color, depth); } -const Mesh &PostProcessor::get_fullscreen_quad() -{ - static const Mesh &mesh = create_fullscreen_quad(); - return mesh; -} - -const Mesh &PostProcessor::create_fullscreen_quad() +RefPtr PostProcessor::get_fullscreen_quad() { - static Mesh 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(); + 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; }