void execute( const FutureMap& input, PromiseMap& output ) const { RenderingSetGenerator renderSetGenerator( _cache ); ConstCacheObjects cacheObjects; size_t nVisible = 0; size_t nAvailable = 0; size_t nNotAvailable = 0; for( const auto& visibles: input.get< NodeIds >( "VisibleNodes" )) { size_t available = 0; size_t notAvailable = 0; const ConstCacheObjects& objs = renderSetGenerator.generateRenderingSet( visibles, available, notAvailable ); cacheObjects.insert( cacheObjects.end(), objs.begin(), objs.end( )); nVisible += visibles.size(); nAvailable += available; nNotAvailable += notAvailable; } output.set( "CacheObjects", cacheObjects ); output.set( "RenderingDone", cacheObjects.size() == nVisible ); output.set( "AvailableCount", nAvailable ); output.set( "NotAvailableCount", nNotAvailable ); }
void generateRenderBricks( const ConstCacheObjects& renderNodes, RenderBricks& renderBricks ) { renderBricks.reserve( renderNodes.size( )); BOOST_FOREACH( const ConstCacheObjectPtr& cacheObject, renderNodes ) { const ConstTextureObjectPtr texture = boost::static_pointer_cast< const TextureObject >( cacheObject ); RenderBrickPtr renderBrick( new RenderBrick( texture->getLODNode(), texture->getTextureState( ))); renderBricks.push_back( renderBrick ); } }