|
|
@@ -2988,6 +2988,10 @@ class WebGLRenderer {
|
|
|
const textureFormat = texture.format;
|
|
|
const textureType = texture.type;
|
|
|
|
|
|
+ // when using MRT, select the correct color buffer for the subsequent read command
|
|
|
+
|
|
|
+ if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
|
+
|
|
|
if ( ! capabilities.textureFormatReadable( textureFormat ) ) {
|
|
|
|
|
|
error( 'WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );
|
|
|
@@ -3006,10 +3010,6 @@ class WebGLRenderer {
|
|
|
|
|
|
if ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {
|
|
|
|
|
|
- // when using MRT, select the correct color buffer for the subsequent read command
|
|
|
-
|
|
|
- if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
|
-
|
|
|
_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );
|
|
|
|
|
|
}
|
|
|
@@ -3070,6 +3070,11 @@ class WebGLRenderer {
|
|
|
const textureFormat = texture.format;
|
|
|
const textureType = texture.type;
|
|
|
|
|
|
+ // when using MRT, select the correct color buffer for the subsequent read command
|
|
|
+
|
|
|
+ if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
|
+
|
|
|
+
|
|
|
if ( ! capabilities.textureFormatReadable( textureFormat ) ) {
|
|
|
|
|
|
throw new Error( 'THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.' );
|
|
|
@@ -3086,10 +3091,6 @@ class WebGLRenderer {
|
|
|
_gl.bindBuffer( _gl.PIXEL_PACK_BUFFER, glBuffer );
|
|
|
_gl.bufferData( _gl.PIXEL_PACK_BUFFER, buffer.byteLength, _gl.STREAM_READ );
|
|
|
|
|
|
- // when using MRT, select the correct color buffer for the subsequent read command
|
|
|
-
|
|
|
- if ( renderTarget.textures.length > 1 ) _gl.readBuffer( _gl.COLOR_ATTACHMENT0 + textureIndex );
|
|
|
-
|
|
|
_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), 0 );
|
|
|
|
|
|
// reset the frame buffer to the currently set buffer before waiting
|