浏览代码

Fix VREffect support for webvr-polyfill

* Fix VREffect support for webvr-polyfill (#8712)
- correctly set `isPresenting` in full screen mode
- webvr-polyfill fires fullscreenchange in VR mode
- fix needed for setting main window to full screen while presenting

* Code clean-up (#8748, #8712)
- Added parentheses to clarify per @mrdoob
- More spaces
- cast `isPresenting` to boolean

* Check if vrHMD is undefined (#8748, #8712)
Brian Chirls 9 年之前
父节点
当前提交
65a16691be
共有 1 个文件被更改,包括 16 次插入2 次删除
  1. 16 2
      examples/js/effects/VREffect.js

+ 16 - 2
examples/js/effects/VREffect.js

@@ -102,7 +102,7 @@ THREE.VREffect = function ( renderer, onError ) {
 
 	document.addEventListener( fullscreenchange, function () {
 
-		isPresenting = isDeprecatedAPI && vrHMD && ( document.mozFullScreenElement || document.webkitFullscreenElement ) !== undefined;
+		isPresenting = vrHMD !== undefined && ( vrHMD.isPresenting || ( isDeprecatedAPI && ( document.mozFullScreenElement || document.webkitFullscreenElement ) !== undefined ) );
 
 		if ( isPresenting ) {
 
@@ -110,8 +110,22 @@ THREE.VREffect = function ( renderer, onError ) {
 			rendererSize = renderer.getSize();
 
 			var eyeParamsL = vrHMD.getEyeParameters( 'left' );
+			var eyeWidth, eyeHeight;
+
+			if ( isDeprecatedAPI ) {
+
+				eyeWidth = eyeParamsL.renderRect.width;
+				eyeHeight = eyeParamsL.renderRect.height;
+
+			} else {
+
+				eyeWidth = eyeParamsL.renderWidth;
+				eyeHeight = eyeParamsL.renderHeight;
+
+			}
+
 			renderer.setPixelRatio( 1 );
-			renderer.setSize( eyeParamsL.renderRect.width * 2, eyeParamsL.renderRect.height, false );
+			renderer.setSize( eyeWidth * 2, eyeHeight, false );
 
 		} else {