Просмотр исходного кода

WebXRManager: Further improvements to WebXR layers feature testing. (#30282)

* Further improvements to WebXR layers feature testing

* Update webxr_vr_layers.html

Clean up.

* Update WebXRManager.js

Clean up.

* Updated E2E screenshot.

---------

Co-authored-by: Michael Herzog <michael.herzog@human-interactive.org>
Brandon Jones 1 год назад
Родитель
Сommit
e648b56cdd

BIN
examples/screenshots/webxr_vr_layers.jpg


+ 5 - 2
examples/webxr_vr_layers.html

@@ -305,9 +305,12 @@
 				const gl = renderer.getContext();
 
 				// Init layers once in immersive mode and video is ready.
-				const useLayers = session.enabledFeatures !== undefined && session.enabledFeatures.includes('layers');
+				const useLayers = session &&
+					session.enabledFeatures !== undefined &&
+					session.enabledFeatures.includes('layers') &&
+					XRMediaBinding !== undefined;
 
-				if ( session && ! useLayers ) {
+				if ( ! useLayers ) {
 
 					errorMesh.visible = true;
 

+ 3 - 1
src/renderers/webxr/WebXRManager.js

@@ -275,7 +275,9 @@ class WebXRManager extends EventDispatcher {
 				currentPixelRatio = renderer.getPixelRatio();
 				renderer.getSize( currentSize );
 
-				const useLayers = session.enabledFeatures !== undefined && session.enabledFeatures.includes( 'layers' );
+				// Check that the browser implements the necessary APIs to use an
+				// XRProjectionLayer rather than an XRWebGLLayer
+				const useLayers = XRWebGLBinding !== undefined && 'createProjectionLayer' in XRWebGLBinding.prototype;
 
 				if ( ! useLayers ) {
 

粤ICP备19079148号