@@ -1284,11 +1284,56 @@ class Renderer {
12841284
12851285 copyFramebufferToTexture ( framebufferTexture , rectangle = null ) {
12861286
1287- const renderContext = this . _currentRenderContext ;
1287+ if ( rectangle !== null ) {
1288+
1289+ if ( rectangle . isVector2 ) {
1290+
1291+ rectangle = _vector4 . set ( rectangle . x , rectangle . y , framebufferTexture . image . width , framebufferTexture . image . height ) . floor ( ) ;
1292+
1293+ } else if ( rectangle . isVector4 ) {
1294+
1295+ rectangle = _vector4 . copy ( rectangle ) . floor ( ) ;
1296+
1297+ } else {
1298+
1299+ console . error ( 'THREE.Renderer.copyFramebufferToTexture: Invalid rectangle.' ) ;
1300+
1301+ return ;
1302+
1303+ }
1304+
1305+ } else {
1306+
1307+ rectangle = _vector4 . set ( 0 , 0 , framebufferTexture . image . width , framebufferTexture . image . height ) ;
1308+
1309+ }
1310+
1311+ //
1312+
1313+ let renderContext = this . _currentRenderContext ;
1314+ let renderTarget ;
1315+
1316+ if ( renderContext !== null ) {
1317+
1318+ renderTarget = renderContext . renderTarget ;
1319+
1320+ } else {
1321+
1322+ renderTarget = this . _renderTarget || this . _getFrameBufferTarget ( ) ;
1323+
1324+ if ( renderTarget !== null ) {
12881325
1289- this . _textures . updateTexture ( framebufferTexture ) ;
1326+ this . _textures . updateRenderTarget ( renderTarget ) ;
12901327
1291- rectangle = rectangle === null ? _vector4 . set ( 0 , 0 , framebufferTexture . image . width , framebufferTexture . image . height ) : rectangle ;
1328+ renderContext = this . _textures . get ( renderTarget ) ;
1329+
1330+ }
1331+
1332+ }
1333+
1334+ //
1335+
1336+ this . _textures . updateTexture ( framebufferTexture , { renderTarget } ) ;
12921337
12931338 this . backend . copyFramebufferToTexture ( framebufferTexture , renderContext , rectangle ) ;
12941339
@@ -1303,7 +1348,6 @@ class Renderer {
13031348
13041349 }
13051350
1306-
13071351 readRenderTargetPixelsAsync ( renderTarget , x , y , width , height , index = 0 , faceIndex = 0 ) {
13081352
13091353 return this . backend . copyTextureToBuffer ( renderTarget . textures [ index ] , x , y , width , height , faceIndex ) ;
0 commit comments