namespace Msp {
namespace GL {
+WeakPtr<Mesh> 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<Mesh> 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;
+ 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;
}