]> git.tdb.fi Git - libs/gl.git/blobdiff - source/render/scene.h
Store simpler states by value in PipelineState
[libs/gl.git] / source / render / scene.h
index 8083239390fed6d765e546ae08ea2aadde14f2ce..d07a81da80b82fef2998eed732c4d3aca8bef8b3 100644 (file)
@@ -11,9 +11,15 @@ namespace Msp {
 namespace GL {
 
 /**
-Scenes are containers for other Renderables.  This is a base class that can't
-be instantiated.  Examples of available Scene types are SimpleScene,
-InstancedScene and OrderedScene.
+Container for other renderables.  Subclasses provide different ways of
+rendering the contents.
+
+All types of Scenes perform frustum culling on the contents, skipping
+renderables whose bounding sphere is fully outside the view volume.  If a
+bounding sphere cannot be determined, culling is not performed on that
+renderable.
+
+SimpleScene is a good default choice if there are no specific requirements.
 */
 class Scene: public Renderable
 {
@@ -25,7 +31,8 @@ protected:
 
        private:
                ContentMap *content;
-               unsigned inst_counter;
+
+               static unsigned inline_counter;
 
        public:
                Loader(Scene &s, Collection &c): Loader(s, c, 0) { }
@@ -36,6 +43,7 @@ protected:
                void object(const std::string &);
                void object_tagged(const std::string &, const std::string &);
                void scene(const std::string &);
+               void scene_inline();
        };
 
 public:
@@ -55,9 +63,6 @@ protected:
        mutable Vector4 frustum_edges[6];
 
        Scene() = default;
-private:
-       Scene(const Scene &);
-       Scene &operator=(const Scene &);
 public:
        virtual ~Scene() = default;