Add shouldRender functor to render args

This commit is contained in:
Atlante45 2015-06-02 16:09:05 +02:00
parent f8042e299e
commit 9d4ded1fb3
2 changed files with 12 additions and 8 deletions

View file

@ -113,13 +113,10 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
// TODO: some entity types (like lights) might want to be rendered even
// when they are outside of the view frustum...
float distance = args->_viewFrustum->distanceToCamera(bound.calcCenter());
bool outOfView = args->_viewFrustum->boxInFrustum(bound) == ViewFrustum::OUTSIDE;
if (!outOfView) {
bool bigEnoughToRender = true; //_viewState->shouldRenderMesh(bound.getLargestDimension(), distance);
bool bigEnoughToRender = (args->_shouldRender) ? args->_shouldRender(args, bound) : true;
if (bigEnoughToRender) {
outItems.push_back(id); // One more Item to render
args->_itemsRendered++;
@ -129,8 +126,7 @@ void render::cullItems(const SceneContextPointer& sceneContext, const RenderCont
} else {
args->_itemsOutOfView++;
}
}
}
}
struct ItemBound {

View file

@ -12,8 +12,11 @@
#ifndef hifi_RenderArgs_h
#define hifi_RenderArgs_h
class ViewFrustum;
#include <functional>
class AABox;
class OctreeRenderer;
class ViewFrustum;
namespace gpu {
class Batch;
class Context;
@ -21,6 +24,8 @@ class Context;
class RenderArgs {
public:
typedef std::function<bool(const RenderArgs* args, const AABox& bounds)> ShoudRenderFunctor;
enum RenderMode { DEFAULT_RENDER_MODE, SHADOW_RENDER_MODE, DIFFUSE_RENDER_MODE, NORMAL_RENDER_MODE, MIRROR_RENDER_MODE };
enum RenderSide { MONO, STEREO_LEFT, STEREO_RIGHT };
@ -40,6 +45,7 @@ public:
RenderSide renderSide = MONO,
DebugFlags debugFlags = RENDER_DEBUG_NONE,
gpu::Batch* batch = nullptr,
ShoudRenderFunctor shouldRender = nullptr,
int elementsTouched = 0,
int itemsRendered = 0,
@ -66,6 +72,7 @@ public:
_renderSide(renderSide),
_debugFlags(debugFlags),
_batch(batch),
_shouldRender(shouldRender),
_elementsTouched(elementsTouched),
_itemsRendered(itemsRendered),
@ -94,6 +101,7 @@ public:
RenderSide _renderSide;
DebugFlags _debugFlags;
gpu::Batch* _batch;
ShoudRenderFunctor _shouldRender;
int _elementsTouched;
int _itemsRendered;