Skip to content

Commit d4c01b9

Browse files
authored
TextureUtils: Fix invalid texture data after decompression. (mrdoob#27137)
1 parent b8e78a3 commit d4c01b9

File tree

1 file changed

+15
-4
lines changed

1 file changed

+15
-4
lines changed

examples/jsm/utils/TextureUtils.js

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
PerspectiveCamera,
77
Scene,
88
WebGLRenderer,
9-
Texture,
9+
CanvasTexture,
1010
SRGBColorSpace
1111
} from 'three';
1212

@@ -56,17 +56,28 @@ export function decompress( texture, maxTextureSize = Infinity, renderer = null
5656
const _scene = new Scene();
5757
_scene.add( fullscreenQuad );
5858

59-
if ( ! renderer ) {
59+
if ( renderer === null ) {
6060

6161
renderer = _renderer = new WebGLRenderer( { antialias: false } );
6262

6363
}
6464

65-
renderer.setSize( Math.min( texture.image.width, maxTextureSize ), Math.min( texture.image.height, maxTextureSize ) );
65+
const width = Math.min( texture.image.width, maxTextureSize );
66+
const height = Math.min( texture.image.height, maxTextureSize );
67+
68+
renderer.setSize( width, height );
6669
renderer.clear();
6770
renderer.render( _scene, _camera );
6871

69-
const readableTexture = new Texture( renderer.domElement );
72+
const canvas = document.createElement( 'canvas' );
73+
const context = canvas.getContext( '2d' );
74+
75+
canvas.width = width;
76+
canvas.height = height;
77+
78+
context.drawImage( renderer.domElement, 0, 0, width, height );
79+
80+
const readableTexture = new CanvasTexture( canvas );
7081

7182
readableTexture.minFilter = texture.minFilter;
7283
readableTexture.magFilter = texture.magFilter;

0 commit comments

Comments
 (0)