From f44fd454260b04bf2bcec30a8bdba89449b20feb Mon Sep 17 00:00:00 2001 From: Diego Marcos Date: Mon, 18 Mar 2019 17:52:16 -0700 Subject: [PATCH] Update vr drawing buffer size when the WebVRManager device is set. Fix scenarios where buffer size is set to the screen resolution instead of headset display's --- src/renderers/webvr/WebVRManager.js | 46 +++++++++++++++++++---------- 1 file changed, 31 insertions(+), 15 deletions(-) diff --git a/src/renderers/webvr/WebVRManager.js b/src/renderers/webvr/WebVRManager.js index 222fd18172d0eb..5314c2be35aae6 100644 --- a/src/renderers/webvr/WebVRManager.js +++ b/src/renderers/webvr/WebVRManager.js @@ -65,27 +65,14 @@ function WebVRManager( renderer ) { function onVRDisplayPresentChange() { - if ( isPresenting() ) { - - var eyeParameters = device.getEyeParameters( 'left' ); - var renderWidth = eyeParameters.renderWidth * framebufferScaleFactor; - var renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; + updateDrawingBufferSize(); - currentPixelRatio = renderer.getPixelRatio(); - renderer.getSize( currentSize ); - - renderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 ); + if ( isPresenting() ) { animation.start(); } else { - if ( scope.enabled ) { - - renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); - - } - animation.stop(); } @@ -119,6 +106,31 @@ function WebVRManager( renderer ) { } + function updateDrawingBufferSize() { + + if ( isPresenting() ) { + + var eyeParameters = device.getEyeParameters( 'left' ); + var renderWidth = eyeParameters.renderWidth * framebufferScaleFactor; + var renderHeight = eyeParameters.renderHeight * framebufferScaleFactor; + + renderer.setDrawingBufferSize( renderWidth * 2, renderHeight, 1 ); + + } else { + + if ( scope.enabled ) { + + currentPixelRatio = renderer.getPixelRatio(); + renderer.getSize( currentSize ); + + renderer.setDrawingBufferSize( currentSize.width, currentSize.height, currentPixelRatio ); + + } + + } + + } + function updateControllers() { for ( var i = 0; i < controllers.length; i ++ ) { @@ -210,6 +222,10 @@ function WebVRManager( renderer ) { animation.setContext( value ); + updateDrawingBufferSize(); + + if ( isPresenting() ) animation.start(); + }; this.setFramebufferScaleFactor = function ( value ) {