Skip to content

Commit

Permalink
SciView: fix VR toggling changes to stereo rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
smlpt committed May 8, 2024
1 parent 435e6e5 commit 4e90c33
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions src/main/kotlin/sc/iview/SciView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -1668,6 +1668,8 @@ class SciView : SceneryBase, CalibratedRealInterval<CalibratedAxis> {
* Enable VR rendering
*/
fun toggleVRRendering() {
var renderer = renderer ?: return

vrActive = !vrActive
val cam = scene.activeObserver as? DetachedHeadCamera ?: return
var ti: TrackerInput? = null
Expand All @@ -1690,25 +1692,29 @@ class SciView : SceneryBase, CalibratedRealInterval<CalibratedAxis> {
}
if (vrActive && ti != null) {
cam.tracker = ti
logger.info("tracker set")
} else {
cam.tracker = null
}
renderer!!.pushMode = false
renderer.pushMode = false

// we need to force reloading the renderer as the HMD might require device or instance extensions
if (renderer is VulkanRenderer && hmdAdded) {
replaceRenderer((renderer as VulkanRenderer).javaClass.simpleName, true, true)
(renderer as VulkanRenderer).toggleVR()
while (!(renderer as VulkanRenderer).initialized /* || !getRenderer().getFirstImageReady()*/) {
logger.debug("Waiting for renderer reinitialisation")
replaceRenderer(renderer.javaClass.simpleName, true, true)

logger.info("renderer replaced")
while (renderer.initialized == false || renderer.firstImageReady == false) {
renderer = this.renderer!!
logger.info("Waiting for renderer reinitialisation (init: ${renderer.initialized} ready: ${renderer.firstImageReady}")
try {
Thread.sleep(200)
} catch (e: InterruptedException) {
e.printStackTrace()
}
}
} else {
renderer!!.toggleVR()
}

renderer.toggleVR()
}

/**
Expand Down

0 comments on commit 4e90c33

Please sign in to comment.