void VisionRenderer::updateScene(bool updateSensorForRenderingThread) { for(size_t i=0; i < sceneBodies.size(); ++i){ SceneBody* sceneBody = sceneBodies[i]; sceneBody->updateLinkPositions(); sceneBody->updateSceneDevices(); } if(updateSensorForRenderingThread){ deviceForRendering->copyStateFrom(*device); } }
void VisionRenderer::renderInSimulationThread() { for(size_t i=0; i < sceneBodies.size(); ++i){ SceneBody* sceneBody = sceneBodies[i]; sceneBody->updateLinkPositions(); sceneBody->updateSceneDevices(); } pixelBuffer->makeCurrent(); renderer.render(); renderer.flush(); pixelBuffer->doneCurrent(); }
void VisionRenderer::startConcurrentRendering() { { boost::unique_lock<boost::mutex> lock(renderingMutex); for(size_t i=0; i < sceneBodies.size(); ++i){ SceneBody* sceneBody = sceneBodies[i]; sceneBody->updateLinkPositions(); sceneBody->updateSceneDevices(); } sensorForRendering->copyStateFrom(*sensor); isRenderingRequested = true; } renderingCondition.notify_all(); }