diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 2de215108db6348949e065b43432a094213a80a0..891c8e43b56bcd789b0e3da6d9e3d6aaf3d5d21f 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -123,6 +123,8 @@ function WebGLRenderer( parameters ) { // internal state cache + _framebuffer = null, + _currentRenderTarget = null, _currentFramebuffer = null, _currentMaterialId = - 1, @@ -290,7 +292,7 @@ function WebGLRenderer( parameters ) { // vr - var vr = ( 'xr' in navigator ) ? new WebXRManager( _gl ) : new WebVRManager( _this ); + var vr = ( 'xr' in navigator ) ? new WebXRManager( _this ) : new WebVRManager( _this ); this.vr = vr; @@ -2396,6 +2398,14 @@ function WebGLRenderer( parameters ) { }() ); + // + + this.setFramebuffer = function ( value ) { + + _framebuffer = value; + + }; + this.getRenderTarget = function () { return _currentRenderTarget; @@ -2412,7 +2422,7 @@ function WebGLRenderer( parameters ) { } - var framebuffer = null; + var framebuffer = _framebuffer; var isCube = false; if ( renderTarget ) { diff --git a/src/renderers/webvr/WebXRManager.js b/src/renderers/webvr/WebXRManager.js index 208fbe32f985a7f299fef8947dc72bc77f725676..77ddc78a676925e91a5c2f8bbd856c0b97c0c88c 100644 --- a/src/renderers/webvr/WebXRManager.js +++ b/src/renderers/webvr/WebXRManager.js @@ -10,10 +10,11 @@ import { ArrayCamera } from '../../cameras/ArrayCamera.js'; import { PerspectiveCamera } from '../../cameras/PerspectiveCamera.js'; import { WebGLAnimation } from '../webgl/WebGLAnimation.js'; -function WebXRManager( gl ) { +function WebXRManager( renderer ) { var scope = this; + var gl = renderer.context; var device = null; var session = null; @@ -70,7 +71,7 @@ function WebXRManager( gl ) { session.addEventListener( 'end', function () { - gl.bindFramebuffer( gl.FRAMEBUFFER, null ); + renderer.setFramebuffer( null ); animation.stop(); } ); @@ -81,6 +82,8 @@ function WebXRManager( gl ) { frameOfRef = value; isExclusive = session.exclusive; + renderer.setFramebuffer( session.baseLayer.framebuffer ); + animation.setContext( session ); animation.start(); @@ -135,8 +138,6 @@ function WebXRManager( gl ) { } - gl.bindFramebuffer( gl.FRAMEBUFFER, session.baseLayer.framebuffer ); - if ( onAnimationFrameCallback ) onAnimationFrameCallback(); }