]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/occludedscene.h
Use default member initializers for simple types
[libs/gl.git] / source / render / occludedscene.h
index 2898bb3ff92032c703c916232ae7459845c0fe8c..6efb354e37706cdcf4bece658678638f28f382ff 100644 (file)
@@ -3,44 +3,47 @@
 
 #include <set>
 #include <vector>
-#include "mesh.h"
-#include "program.h"
+#include "blend.h"
+#include "depthtest.h"
+#include "query.h"
 #include "scene.h"
 
 namespace Msp {
 namespace GL {
 
+class Mesh;
+class Program;
+
 /**
 A scene that performs occlusion queries on renderables to skip those that are
 entirely occluded by others.
 */
 class OccludedScene: public Scene
 {
+public:
+       using Scene::Loader;
+
 private:
        struct OccludedRenderable
        {
-               Renderable *renderable;
-               const Geometry::BoundingSphere<float, 3> *bounding_sphere;
-               bool in_frustum;
-               bool occluder;
-               unsigned query;
-
-               OccludedRenderable();
+               Renderable *renderable = 0;
+               const Geometry::BoundingSphere<float, 3> *bounding_sphere = 0;
+               bool in_frustum = false;
+               bool occluder = false;
        };
 
-       typedef std::set<Renderable *> RenderableSet;
-       typedef std::vector<OccludedRenderable> OccludedArray;
-
-       Mesh bounding_mesh;
-       Program bounding_shader;
-       RenderableSet renderables;
-       float occluder_min_size;
-       mutable OccludedArray occluded_cache;
-       mutable bool cache_dirty;
+       const Mesh &bounding_mesh;
+       const Program &bounding_shader;
+       Blend no_color_write;
+       DepthTest no_depth_write = { LEQUAL, false };
+       std::set<Renderable *> renderables;
+       float occluder_min_size = 0.25f;
+       mutable QueryPool queries;
+       mutable std::vector<OccludedRenderable> occluded_cache;
+       mutable bool cache_dirty = false;
 
 public:
        OccludedScene();
-       ~OccludedScene();
 
        virtual void add(Renderable &);
        virtual void remove(Renderable &);
@@ -52,7 +55,7 @@ public:
        virtual void setup_frame(Renderer &);
        virtual void finish_frame();
 
-       virtual void render(Renderer &, const Tag & = Tag()) const;
+       virtual void render(Renderer &, Tag = Tag()) const;
 };
 
 } // namespace GL