void render( const RenderInput& renderInput, RenderOutput& renderOutput ) { reshape( renderInput.windowSize ); _engine->preRender(); _engine->getCamera()->set( renderInput.position, renderInput.target, renderInput.up ); #if(BRAYNS_USE_DEFLECT || BRAYNS_USE_REST) if( !_extensionPluginFactory ) _intializeExtensionPluginFactory( ); _extensionPluginFactory->execute( ); #endif ScenePtr scene = _engine->getScene(); CameraPtr camera = _engine->getCamera(); FrameBufferPtr frameBuffer = _engine->getFrameBuffer(); const Vector2i& frameSize = frameBuffer->getSize(); if( _parametersManager->getRenderingParameters().getSunOnCamera() ) { LightPtr sunLight = scene->getLight( 0 ); DirectionalLight* sun = dynamic_cast< DirectionalLight* > ( sunLight.get() ); if( sun ) { sun->setDirection( camera->getTarget() - camera->getPosition() ); scene->commitLights(); } } camera->commit(); _render( ); uint8_t* colorBuffer = frameBuffer->getColorBuffer( ); size_t size = frameSize.x( ) * frameSize.y( ) * frameBuffer->getColorDepth( ); renderOutput.colorBuffer.assign( colorBuffer, colorBuffer + size ); float* depthBuffer = frameBuffer->getDepthBuffer( ); size = frameSize.x( ) * frameSize.y( ); renderOutput.depthBuffer.assign( depthBuffer, depthBuffer + size ); _engine->postRender(); }
void render() { ScenePtr scene = _engine->getScene(); CameraPtr camera = _engine->getCamera(); FrameBufferPtr frameBuffer = _engine->getFrameBuffer(); const Vector2i& frameSize = frameBuffer->getSize(); _engine->preRender(); #if(BRAYNS_USE_DEFLECT || BRAYNS_USE_REST) if( !_extensionPluginFactory ) _intializeExtensionPluginFactory( ); _extensionPluginFactory->execute( ); #endif if( _parametersManager->getRenderingParameters().getSunOnCamera() ) { LightPtr sunLight = scene->getLight( 0 ); DirectionalLight* sun = dynamic_cast< DirectionalLight* > ( sunLight.get() ); if( sun ) { sun->setDirection( camera->getTarget() - camera->getPosition() ); scene->commitLights(); } } camera->commit(); _render( ); _engine->postRender(); const Vector2ui windowSize = _parametersManager ->getApplicationParameters() .getWindowSize(); if( windowSize != frameSize ) reshape(windowSize); }