]> git.tdb.fi Git - libs/gl.git/blob - source/simplescene.cpp
Further tweak frustum culling to be more efficient
[libs/gl.git] / source / simplescene.cpp
1 #include "renderer.h"
2 #include "simplescene.h"
3
4 namespace Msp {
5 namespace GL {
6
7 void SimpleScene::add(const Renderable &r)
8 {
9         renderables.insert(&r);
10 }
11
12 void SimpleScene::remove(const Renderable &r)
13 {
14         renderables.erase(&r);
15 }
16
17 void SimpleScene::setup_frame() const
18 {
19         for(RenderableSet::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
20                 (*i)->setup_frame();
21 }
22
23 void SimpleScene::finish_frame() const
24 {
25         for(RenderableSet::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
26                 (*i)->finish_frame();
27 }
28
29 void SimpleScene::render(Renderer &renderer, const Tag &tag) const
30 {
31         if(setup_frustum(renderer))
32         {
33                 for(RenderableSet::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
34                         if(!frustum_cull(**i))
35                                 renderer.render(**i, tag);
36         }
37         else
38         {
39                 for(RenderableSet::const_iterator i=renderables.begin(); i!=renderables.end(); ++i)
40                         renderer.render(**i, tag);
41         }
42 }
43
44 } // namespace GL
45 } // namespace Msp