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

ViewHelper: Add `OffscreenCanvas` support. (#32128)

Michael Herzog 5 месяцев назад
Родитель
Сommit
ca94c690d3
1 измененных файлов с 41 добавлено и 3 удалено
  1. 41 3
      examples/jsm/helpers/ViewHelper.js

+ 41 - 3
examples/jsm/helpers/ViewHelper.js

@@ -368,13 +368,51 @@ class ViewHelper extends Object3D {
 
 		}
 
+		function useOffscreenCavnas() {
+
+			let useOffscreenCanvas = false;
+
+			try {
+
+				// this check has been adapted from WebGLTextures
+
+				useOffscreenCanvas = typeof OffscreenCanvas !== 'undefined' && ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;
+
+			} catch ( err ) {
+
+				// Ignore any errors
+
+			}
+
+			return useOffscreenCanvas;
+
+		}
+
+		function createCanvas( width, height ) {
+
+			let canvas;
+
+			if ( useOffscreenCavnas() ) {
+
+				canvas = new OffscreenCanvas( width, height );
+
+			} else {
+
+				canvas = document.createElement( 'canvas' );
+				canvas.width = width;
+				canvas.height = height;
+
+			}
+
+			return canvas;
+
+		}
+
 		function getSpriteMaterial( color, text ) {
 
 			const { font = '24px Arial', color: labelColor = '#000000', radius = 14 } = options;
 
-			const canvas = document.createElement( 'canvas' );
-			canvas.width = 64;
-			canvas.height = 64;
+			const canvas = createCanvas( 64, 64 );
 
 			const context = canvas.getContext( '2d' );
 			context.beginPath();

粤ICP备19079148号