From: Peter Schaefer Date: Thu, 19 May 2016 14:19:58 +0000 (+0200) Subject: enabled F8 -> Frustum X-Git-Url: https://git.leopard-lacewing.eu/?a=commitdiff_plain;h=e9335e9096cdff1a6f8d3bc3e3e66337277d3e68;p=cgue_weave.git enabled F8 -> Frustum --- diff --git a/Weave/Events.cpp b/Weave/Events.cpp index d294895..4851b6a 100644 --- a/Weave/Events.cpp +++ b/Weave/Events.cpp @@ -130,6 +130,10 @@ void Events::KeyDown(int _key) break; case SDLK_F8: //VIEW FRUSTUMCULLING + if (!key_toggle[SDLK_F8]) + Graphix::disableEffects(EF_FRUSTUM_CULLING); + else + Graphix::enableEffects(EF_FRUSTUM_CULLING); break; case SDLK_F9: //TRANSPARENCY diff --git a/Weave/Graphix/Graphix.cpp b/Weave/Graphix/Graphix.cpp index 4f81869..ed3d421 100644 --- a/Weave/Graphix/Graphix.cpp +++ b/Weave/Graphix/Graphix.cpp @@ -288,4 +288,4 @@ SDL_Window* Graphix::sdl_window; SDL_GLContext Graphix::sdl_glcontext; -short Graphix::effects = EF_TRANSPARENCY | EF_BLOOM; +short Graphix::effects = EF_TRANSPARENCY | EF_BLOOM | EF_FRUSTUM_CULLING; diff --git a/Weave/Graphix/Graphix.h b/Weave/Graphix/Graphix.h index 7d10ff4..ea7a0ea 100644 --- a/Weave/Graphix/Graphix.h +++ b/Weave/Graphix/Graphix.h @@ -11,7 +11,8 @@ enum Effects { EF_NOTHING = 0, EF_MOTION_BLUR_ACC = BIT(1), EF_TRANSPARENCY = BIT(2), - EF_BLOOM = BIT(3) + EF_BLOOM = BIT(3), + EF_FRUSTUM_CULLING = BIT(4) }; class Graphix diff --git a/Weave/Scene/Scene.cpp b/Weave/Scene/Scene.cpp index 4876350..87051d8 100644 --- a/Weave/Scene/Scene.cpp +++ b/Weave/Scene/Scene.cpp @@ -334,15 +334,16 @@ void Scene::draw() const void Scene::drawSceneObjects(drawTarget _target) const { - /*TODO: Frustum Culling*/ /*TODO: Z-Order (Back2Front)*/ for (auto i = SceneObjects.cbegin(); i != SceneObjects.cend(); ++i) { - - auto result = camera.frustum_sphere((*i)->getPosition() +(*i)->gModel()->getBox().center() , (*i)->gModel()->getBox().radius()); - if (result == camera.FC_OUTSIDE) - continue; + if (Graphix::testEffect(EF_FRUSTUM_CULLING)) + { + auto result = camera.frustum_sphere((*i)->getPosition() + (*i)->gModel()->getBox().center(), (*i)->gModel()->getBox().radius()); + if (result == camera.FC_OUTSIDE) + continue; + } (*i)->draw(_target); } }