| 362 | } |
| 363 | |
| 364 | void GLFWDistribOSPRayWindow::startNewOSPRayFrame() |
| 365 | { |
| 366 | bool fbNeedsClear = false; |
| 367 | auto handles = objectsToCommit.consume(); |
| 368 | if (!handles.empty()) { |
| 369 | for (auto &h : handles) |
| 370 | ospCommit(h); |
| 371 | |
| 372 | fbNeedsClear = true; |
| 373 | } |
| 374 | |
| 375 | if (windowState.fbSizeChanged) { |
| 376 | windowState.fbSizeChanged = false; |
| 377 | windowSize = windowState.windowSize; |
| 378 | |
| 379 | framebuffer = cpp::FrameBuffer( |
| 380 | windowSize.x, windowSize.y, OSP_FB_SRGBA, OSP_FB_COLOR | OSP_FB_ACCUM); |
| 381 | camera.setParam("aspect", windowSize.x / float(windowSize.y)); |
| 382 | camera.commit(); |
| 383 | fbNeedsClear = true; |
| 384 | } |
| 385 | if (windowState.cameraChanged) { |
| 386 | windowState.cameraChanged = false; |
| 387 | camera.setParam("aspect", windowSize.x / float(windowSize.y)); |
| 388 | camera.setParam("position", windowState.eyePos); |
| 389 | camera.setParam("direction", windowState.lookDir); |
| 390 | camera.setParam("up", windowState.upDir); |
| 391 | camera.commit(); |
| 392 | fbNeedsClear = true; |
| 393 | } |
| 394 | |
| 395 | if (fbNeedsClear) { |
| 396 | resetAccumulation(); |
| 397 | } |
| 398 | |
| 399 | currentFrame = framebuffer.renderFrame(renderer, camera, world); |
| 400 | } |
| 401 | |
| 402 | void GLFWDistribOSPRayWindow::waitOnOSPRayFrame() |
| 403 | { |
nothing calls this directly
no test coverage detected