MCPcopy Create free account
hub / github.com/RenderKit/ospray / renderFrame

Method renderFrame

modules/multiDevice/MultiDevice.cpp:472–508  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

470}
471
472OSPFuture MultiDevice::renderFrame(OSPFrameBuffer _framebuffer,
473 OSPRenderer _renderer,
474 OSPCamera _camera,
475 OSPWorld _world)
476{
477 MultiDeviceFrameBuffer *multiFb = (MultiDeviceFrameBuffer *)_framebuffer;
478 multiFb->rowmajorFb->setCompletedEvent(OSP_NONE_FINISHED);
479 for (size_t i = 0; i < multiFb->objects.size(); ++i) {
480 SparseFrameBuffer *fbi = (SparseFrameBuffer *)multiFb->objects[i];
481 fbi->setCompletedEvent(OSP_NONE_FINISHED);
482 }
483
484 MultiDeviceObject *multiRenderer = (MultiDeviceObject *)_renderer;
485 MultiDeviceObject *multiCamera = (MultiDeviceObject *)_camera;
486 MultiDeviceObject *multiWorld = (MultiDeviceObject *)_world;
487
488 retain((OSPObject)multiFb);
489 retain((OSPObject)multiRenderer);
490 retain((OSPObject)multiCamera);
491 retain((OSPObject)multiWorld);
492
493 auto *f = new MultiDeviceRenderTask(multiFb, [=]() {
494 utility::CodeTimer timer;
495 timer.start();
496 loadBalancer->renderFrame(multiFb, multiRenderer, multiCamera, multiWorld);
497 timer.stop();
498
499 release((OSPObject)multiFb);
500 release((OSPObject)multiRenderer);
501 release((OSPObject)multiCamera);
502 release((OSPObject)multiWorld);
503
504 return timer.seconds();
505 });
506
507 return (OSPFuture)f;
508}
509
510int MultiDevice::isReady(OSPFuture _task, OSPSyncEvent event)
511{

Callers

nothing calls this directly

Calls 6

retainFunction · 0.85
setCompletedEventMethod · 0.80
stopMethod · 0.80
releaseFunction · 0.50
sizeMethod · 0.45
startMethod · 0.45

Tested by

no test coverage detected