X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Frender%2Fscene.h;h=6f4f48d675e6bce3db2850ca24eb78466157769e;hb=8d211effd0c6db66e57f9ffd8ee712eef6069a1c;hp=f89f10daf26691412de2f950925b11b524d9c783;hpb=00dc5da40385d41c3a50c34c75353b257e814035;p=libs%2Fgl.git diff --git a/source/render/scene.h b/source/render/scene.h index f89f10da..6f4f48d6 100644 --- a/source/render/scene.h +++ b/source/render/scene.h @@ -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 { @@ -54,23 +60,14 @@ public: protected: mutable Matrix culling_matrix; - mutable Vector4 frustum_edges[6]; Scene() = default; -private: - Scene(const Scene &); - Scene &operator=(const Scene &); public: virtual ~Scene() = default; virtual void add(Renderable &) = 0; virtual void remove(Renderable &) = 0; -protected: - bool setup_frustum(const Renderer &) const; - bool frustum_cull(const Renderable &) const; - -public: template static void register_type(const std::string &); private: