X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Foccludedscene.cpp;h=23d79df2ab71a8185bd79318cc3194f692a38bbb;hb=31ae3e3c4a28ac2ec97cc3efaa25adbf1511aadc;hp=b3346385a3a9525765fd8c727ec5cb140d541e45;hpb=dccad64b2ec82249d850b9745614042171499972;p=libs%2Fgl.git diff --git a/source/render/occludedscene.cpp b/source/render/occludedscene.cpp index b3346385..23d79df2 100644 --- a/source/render/occludedscene.cpp +++ b/source/render/occludedscene.cpp @@ -12,9 +12,9 @@ using namespace std; namespace Msp { namespace GL { -OccludedScene::OccludedScene(Resources &resources): - bounding_mesh(resources.get("_occluder.mesh")), - bounding_shader(resources.get("_occluder.glsl.shader")), +OccludedScene::OccludedScene(): + bounding_mesh(Resources::get_global().get("_occluder.mesh")), + bounding_shader(Resources::get_global().get("_occluder.glsl.shader")), occluder_min_size(0.25f), cache_dirty(false) { @@ -26,8 +26,8 @@ OccludedScene::~OccludedScene() { vector queries; queries.reserve(occluded_cache.size()); - for(OccludedArray::iterator i=occluded_cache.begin(); i!=occluded_cache.end(); ++i) - queries.push_back(i->query); + for(OccludedRenderable &o: occluded_cache) + queries.push_back(o.query); glDeleteQueries(queries.size(), &queries[0]); } @@ -58,9 +58,9 @@ void OccludedScene::populate_cache() const occluded_cache[old_size+i].query = new_queries[i]; } - OccludedArray::iterator j = occluded_cache.begin(); - for(RenderableSet::iterator i=renderables.begin(); i!=renderables.end(); ++i, ++j) - j->renderable = *i; + auto j = occluded_cache.begin(); + for(Renderable *r: renderables) + j++->renderable = r; for(; j!=occluded_cache.end(); ++j) { j->renderable = 0; @@ -73,17 +73,17 @@ void OccludedScene::populate_cache() const void OccludedScene::setup_frame(Renderer &renderer) { populate_cache(); - for(OccludedArray::const_iterator i=occluded_cache.begin(); i!=occluded_cache.end(); ++i) - i->renderable->setup_frame(renderer); + for(const OccludedRenderable &o: occluded_cache) + o.renderable->setup_frame(renderer); } void OccludedScene::finish_frame() { - for(OccludedArray::const_iterator i=occluded_cache.begin(); i!=occluded_cache.end(); ++i) - i->renderable->finish_frame(); + for(const OccludedRenderable &o: occluded_cache) + o.renderable->finish_frame(); } -void OccludedScene::render(Renderer &renderer, const Tag &tag) const +void OccludedScene::render(Renderer &renderer, Tag tag) const { if(renderables.empty()) return; @@ -93,8 +93,8 @@ void OccludedScene::render(Renderer &renderer, const Tag &tag) const const Camera *camera = renderer.get_camera(); if(!camera) { - for(OccludedArray::const_iterator i=occluded_cache.begin(); i!=occluded_cache.end(); ++i) - renderer.render(*i->renderable, tag); + for(const OccludedRenderable &o: occluded_cache) + renderer.render(*o.renderable, tag); return; } @@ -105,7 +105,7 @@ void OccludedScene::render(Renderer &renderer, const Tag &tag) const // Perform frustum culling and render any major occluders bool use_frustum = setup_frustum(renderer); - for(OccludedArray::iterator i=occluded_cache.begin(); (i!=occluded_cache.end() && i->renderable); ++i) + for(auto i=occluded_cache.begin(); (i!=occluded_cache.end() && i->renderable); ++i) { i->in_frustum = (!use_frustum || !frustum_cull(*i->renderable)); if(!i->in_frustum) @@ -128,7 +128,7 @@ void OccludedScene::render(Renderer &renderer, const Tag &tag) const } // Move all objects within the frustum to the beginning of the array - for(OccludedArray::iterator i=occluded_cache.begin(), j=i+renderables.size()-1; i!=j; ) + for(auto i=occluded_cache.begin(), j=i+renderables.size()-1; i!=j; ) { if(i->in_frustum) ++i; @@ -146,7 +146,7 @@ void OccludedScene::render(Renderer &renderer, const Tag &tag) const glDepthMask(false); // Fire off the occlusion queries - for(OccludedArray::const_iterator i=occluded_cache.begin(); (i!=occluded_cache.end() && i->in_frustum); ++i) + for(auto i=occluded_cache.begin(); (i!=occluded_cache.end() && i->in_frustum); ++i) if(!i->occluder) { glBeginQuery(GL_ANY_SAMPLES_PASSED, i->query); @@ -163,7 +163,7 @@ void OccludedScene::render(Renderer &renderer, const Tag &tag) const } // Render anything that has a chance of being visible - for(OccludedArray::const_iterator i=occluded_cache.begin(); (i!=occluded_cache.end() && i->in_frustum); ++i) + for(auto i=occluded_cache.begin(); (i!=occluded_cache.end() && i->in_frustum); ++i) if(!i->occluder) { unsigned any_passed = 0;