Bladeren bron

TextureUtils: Fix invalid texture data after decompression. (#27137)

Michael Herzog 1 jaar geleden
bovenliggende
commit
d4c01b98e3
1 gewijzigde bestanden met toevoegingen van 15 en 4 verwijderingen
  1. 15 4
      examples/jsm/utils/TextureUtils.js

+ 15 - 4
examples/jsm/utils/TextureUtils.js

@@ -6,7 +6,7 @@ import {
 	PerspectiveCamera,
 	Scene,
 	WebGLRenderer,
-	Texture,
+	CanvasTexture,
 	SRGBColorSpace
 } from 'three';
 
@@ -56,17 +56,28 @@ export function decompress( texture, maxTextureSize = Infinity, renderer = null
 	const _scene = new Scene();
 	_scene.add( fullscreenQuad );
 
-	if ( ! renderer ) {
+	if ( renderer === null ) {
 
 		renderer = _renderer = new WebGLRenderer( { antialias: false } );
 
 	}
 
-	renderer.setSize( Math.min( texture.image.width, maxTextureSize ), Math.min( texture.image.height, maxTextureSize ) );
+	const width = Math.min( texture.image.width, maxTextureSize );
+	const height = Math.min( texture.image.height, maxTextureSize );
+
+	renderer.setSize( width, height );
 	renderer.clear();
 	renderer.render( _scene, _camera );
 
-	const readableTexture = new Texture( renderer.domElement );
+	const canvas = document.createElement( 'canvas' );
+	const context = canvas.getContext( '2d' );
+
+	canvas.width = width;
+	canvas.height = height;
+
+	context.drawImage( renderer.domElement, 0, 0, width, height );
+
+	const readableTexture = new CanvasTexture( canvas );
 
 	readableTexture.minFilter = texture.minFilter;
 	readableTexture.magFilter = texture.magFilter;