@@ -15,6 +15,7 @@ var GameObject = require('../GameObject');
1515var NOOP = require ( '../../utils/NOOP' ) ;
1616var PIPELINE_CONST = require ( '../../renderer/webgl/pipelines/const' ) ;
1717var Render = require ( './RenderTextureRender' ) ;
18+ var RenderEvents = require ( '../../renderer/webgl/events' ) ;
1819var RenderTarget = require ( '../../renderer/webgl/RenderTarget' ) ;
1920var Utils = require ( '../../renderer/webgl/Utils' ) ;
2021var UUID = require ( '../../utils/string/UUID' ) ;
@@ -286,6 +287,8 @@ var RenderTexture = new Class({
286287 this . setOrigin ( 0 , 0 ) ;
287288
288289 this . initPipeline ( PIPELINE_CONST . SINGLE_PIPELINE ) ;
290+
291+ renderer . on ( RenderEvents . RESIZE , this . onResize , this ) ;
289292 } ,
290293
291294 /**
@@ -304,6 +307,34 @@ var RenderTexture = new Class({
304307 return this . resize ( width , height ) ;
305308 } ,
306309
310+ /**
311+ * Internal renderer resize handler.
312+ *
313+ * @method Phaser.GameObjects.RenderTexture#onResize
314+ * @private
315+ * @since 3.50.0
316+ *
317+ * @param {number } width - The width of the renderer.
318+ * @param {number } height - The height of the renderer.
319+ */
320+ onResize : function ( width , height )
321+ {
322+ var camera = this . camera ;
323+ var renderTarget = this . renderTarget ;
324+
325+ if ( renderTarget )
326+ {
327+ var renderer = this . renderer ;
328+ var rendererWidth = renderer . width ;
329+ var rendererHeight = renderer . height ;
330+
331+ var zoomX = rendererWidth / width ;
332+ var zoomY = rendererHeight / height ;
333+
334+ camera . setZoom ( zoomX , zoomY ) ;
335+ }
336+ } ,
337+
307338 /**
308339 * Resizes the Render Texture to the new dimensions given.
309340 *
@@ -371,7 +402,11 @@ var RenderTexture = new Class({
371402 var zoomY = rendererHeight / height ;
372403
373404 camera . setSize ( width , height ) ;
374- camera . setZoom ( zoomX , zoomY ) ;
405+
406+ if ( renderTarget )
407+ {
408+ camera . setZoom ( zoomX , zoomY ) ;
409+ }
375410
376411 var ox = 0.5 ;
377412 var oy = 0.5 ;
@@ -1290,20 +1325,17 @@ var RenderTexture = new Class({
12901325
12911326 var matrix = this . camera . matrix ;
12921327
1293- ctx . globalAlpha = alpha ;
1328+ ctx . save ( ) ;
12941329
1295- if ( this . _eraseMode )
1296- {
1297- ctx . globalCompositeOperation = 'destination-out' ;
1298- }
1299- else
1300- {
1301- ctx . globalCompositeOperation = 'source-over' ;
1302- }
1330+ ctx . globalCompositeOperation = ( this . _eraseMode ) ? 'destination-out' : 'source-over' ;
13031331
1304- ctx . setTransform ( matrix [ 0 ] , matrix [ 1 ] , matrix [ 2 ] , matrix [ 3 ] , matrix [ 4 ] , matrix [ 5 ] ) ;
1332+ ctx . globalAlpha = alpha ;
1333+
1334+ matrix . setToContext ( ctx ) ;
13051335
13061336 ctx . drawImage ( source , cd . x , cd . y , cd . width , cd . height , x , y , cd . width , cd . height ) ;
1337+
1338+ ctx . restore ( ) ;
13071339 }
13081340 } ,
13091341
@@ -1424,6 +1456,8 @@ var RenderTexture = new Class({
14241456 */
14251457 preDestroy : function ( )
14261458 {
1459+ this . renderer . off ( RenderEvents . RESIZE , this . onResize , this ) ;
1460+
14271461 if ( ! this . _saved )
14281462 {
14291463 CanvasPool . remove ( this . canvas ) ;
0 commit comments