X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Foccludedscene.h;h=f11c707e6781c0ea656a7676e733e3981209ea41;hb=93448d16e72e38afbaecbccf6fdedd46d6a82a73;hp=000673ddfbb3740f76f9cf511c4606d7a5ec8d0e;hpb=9a63244c1342337915c4610401a24c09fa72cc3d;p=libs%2Fgl.git diff --git a/source/render/occludedscene.h b/source/render/occludedscene.h index 000673dd..f11c707e 100644 --- a/source/render/occludedscene.h +++ b/source/render/occludedscene.h @@ -3,8 +3,11 @@ #include #include +#include "blend.h" +#include "depthtest.h" #include "mesh.h" #include "program.h" +#include "query.h" #include "scene.h" namespace Msp { @@ -16,6 +19,9 @@ entirely occluded by others. */ class OccludedScene: public Scene { +public: + using Scene::Loader; + private: struct OccludedRenderable { @@ -23,24 +29,22 @@ private: const Geometry::BoundingSphere *bounding_sphere; bool in_frustum; bool occluder; - unsigned query; OccludedRenderable(); }; - typedef std::set RenderableSet; - typedef std::vector OccludedArray; - const Mesh &bounding_mesh; const Program &bounding_shader; - RenderableSet renderables; + Blend no_color_write; + DepthTest no_depth_write; + std::set renderables; float occluder_min_size; - mutable OccludedArray occluded_cache; + mutable QueryPool queries; + mutable std::vector occluded_cache; mutable bool cache_dirty; public: - OccludedScene(Resources &); - ~OccludedScene(); + OccludedScene(); virtual void add(Renderable &); virtual void remove(Renderable &); @@ -52,7 +56,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