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);
    }
}
Exemplo n.º 2
0
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();
}
Exemplo n.º 3
0
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();
}