]> git.leopard-lacewing.eu Git - cgue_weave.git/commitdiff
enabled F8 -> Frustum
authorPeter Schaefer <schaeferpm@gmail.com>
Thu, 19 May 2016 14:19:58 +0000 (16:19 +0200)
committerPeter Schaefer <schaeferpm@gmail.com>
Thu, 19 May 2016 14:19:58 +0000 (16:19 +0200)
Weave/Events.cpp
Weave/Graphix/Graphix.cpp
Weave/Graphix/Graphix.h
Weave/Scene/Scene.cpp

index d294895f1027e46bfb23520a7bdebbb9cb93f077..4851b6ac93a4656651a80eda41c588453b26bad9 100644 (file)
@@ -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
index 4f8186939406b29502420b6b8f538a8cbf16f29f..ed3d421d314896b602def6bb1d488897d9e28bd2 100644 (file)
@@ -288,4 +288,4 @@ SDL_Window* Graphix::sdl_window;
 \r
 SDL_GLContext Graphix::sdl_glcontext;\r
 \r
-short Graphix::effects = EF_TRANSPARENCY | EF_BLOOM;\r
+short Graphix::effects = EF_TRANSPARENCY | EF_BLOOM | EF_FRUSTUM_CULLING;\r
index 7d10ff47bde9e34663848c8c73b055f0cd22efb4..ea7a0eacd3fcef29931ea17c23764a796ac7b534 100644 (file)
@@ -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
index 4876350de82c21115a388464346de0367666e98e..87051d88944b05f907a0627157eea017111bcdc2 100644 (file)
@@ -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);
        }
 }