From 0b5a7acc30e1ac0c4aa1646f621a44977a68f8b8 Mon Sep 17 00:00:00 2001 From: Peter Schaefer Date: Fri, 20 May 2016 17:47:38 +0200 Subject: [PATCH] optional culling (light calculation without) --- Weave/Scene/Scene.cpp | 6 +++--- Weave/Scene/Scene.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Weave/Scene/Scene.cpp b/Weave/Scene/Scene.cpp index 87051d8..0f1ea4f 100644 --- a/Weave/Scene/Scene.cpp +++ b/Weave/Scene/Scene.cpp @@ -240,7 +240,7 @@ void Scene::draw() const glClear(GL_DEPTH_BUFFER_BIT); Shader::getShader(SH_SHADOWDIR)->useShader(); dirLight->useLight(); - drawSceneObjects(); + drawSceneObjects(DRAW_Model,false); camera.useCamera(); render->useBuffer(); Shader::getShader(SH_LIGHTING)->useShader(); @@ -332,13 +332,13 @@ void Scene::draw() const } -void Scene::drawSceneObjects(drawTarget _target) const +void Scene::drawSceneObjects(drawTarget _target, bool _culling) const { /*TODO: Z-Order (Back2Front)*/ for (auto i = SceneObjects.cbegin(); i != SceneObjects.cend(); ++i) { - if (Graphix::testEffect(EF_FRUSTUM_CULLING)) + if (Graphix::testEffect(EF_FRUSTUM_CULLING)&&_culling) { auto result = camera.frustum_sphere((*i)->getPosition() + (*i)->gModel()->getBox().center(), (*i)->gModel()->getBox().radius()); if (result == camera.FC_OUTSIDE) diff --git a/Weave/Scene/Scene.h b/Weave/Scene/Scene.h index a3072b7..2726bcc 100644 --- a/Weave/Scene/Scene.h +++ b/Weave/Scene/Scene.h @@ -53,7 +53,7 @@ protected: std::list SceneObjects; std::set ShaderSet; - void drawSceneObjects(drawTarget target = DRAW_Model) const; + void drawSceneObjects(drawTarget target = DRAW_Model, bool culling = true) const; float currenttime; -- 2.47.3