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
\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
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
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);
}
}