]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/occludedscene.cpp
Pass Tag by value, not by reference
[libs/gl.git] / source / render / occludedscene.cpp
index 143008cdc92af5a5a1a01a1627d7732fc60ebcbe..b2e7ab3297d1decee09573fad21974e823b8391a 100644 (file)
@@ -4,6 +4,7 @@
 #include "camera.h"
 #include "occludedscene.h"
 #include "renderer.h"
+#include "resources.h"
 #include "sphere.h"
 
 using namespace std;
@@ -11,19 +12,14 @@ using namespace std;
 namespace Msp {
 namespace GL {
 
-OccludedScene::OccludedScene():
-       bounding_mesh((VERTEX3, NORMAL3)),
-       bounding_shader("occluder.glsl"),
+OccludedScene::OccludedScene(Resources &resources):
+       bounding_mesh(resources.get<Mesh>("_occluder.mesh")),
+       bounding_shader(resources.get<Program>("_occluder.glsl.shader")),
        occluder_min_size(0.25f),
        cache_dirty(false)
 {
        static Require req(ARB_occlusion_query);
        static Require req2(ARB_occlusion_query2);
-
-       /* Use a slightly larger radius to ensure that all parts of the renderable
-       fit inside the icosahedron */
-       IcoSphereBuilder(1.26f, 1).build(bounding_mesh);
-       bounding_mesh.set_winding(&WindingTest::counterclockwise());
 }
 
 OccludedScene::~OccludedScene()
@@ -87,7 +83,7 @@ void OccludedScene::finish_frame()
                i->renderable->finish_frame();
 }
 
-void OccludedScene::render(Renderer &renderer, const Tag &tag) const
+void OccludedScene::render(Renderer &renderer, Tag tag) const
 {
        if(renderables.empty())
                return;