@@ -189,20 +189,26 @@ var RenderTarget = new Class({
189189 */
190190 resize : function ( width , height )
191191 {
192- var renderer = this . renderer ;
192+ var scaledWidth = width * this . scale ;
193+ var scaledHeight = height * this . scale ;
193194
194- renderer . deleteFramebuffer ( this . framebuffer ) ;
195+ if ( scaledWidth !== this . width || scaledHeight !== this . height )
196+ {
197+ var renderer = this . renderer ;
195198
196- renderer . deleteTexture ( this . texture ) ;
199+ renderer . deleteFramebuffer ( this . framebuffer ) ;
197200
198- width *= this . scale ;
199- height *= this . scale ;
201+ renderer . deleteTexture ( this . texture ) ;
200202
201- this . texture = renderer . createTextureFromSource ( null , width , height , this . minFilter ) ;
202- this . framebuffer = renderer . createFramebuffer ( width , height , this . texture , false ) ;
203+ width *= this . scale ;
204+ height *= this . scale ;
203205
204- this . width = width ;
205- this . height = height ;
206+ this . texture = renderer . createTextureFromSource ( null , width , height , this . minFilter ) ;
207+ this . framebuffer = renderer . createFramebuffer ( width , height , this . texture , false ) ;
208+
209+ this . width = width ;
210+ this . height = height ;
211+ }
206212
207213 return this ;
208214 } ,
@@ -218,8 +224,10 @@ var RenderTarget = new Class({
218224 * @since 3.50.0
219225 *
220226 * @param {boolean } [adjustViewport=false] - Adjust the GL viewport by calling `RenderTarget.adjustViewport` ?
227+ * @param {number } [width] - Optional new width of this Render Target.
228+ * @param {number } [height] - Optional new height of this Render Target.
221229 */
222- bind : function ( adjustViewport )
230+ bind : function ( adjustViewport , width , height )
223231 {
224232 if ( adjustViewport === undefined ) { adjustViewport = false ; }
225233
@@ -228,6 +236,11 @@ var RenderTarget = new Class({
228236 this . renderer . flush ( ) ;
229237 }
230238
239+ if ( width && height )
240+ {
241+ this . resize ( width , height ) ;
242+ }
243+
231244 this . renderer . pushFramebuffer ( this . framebuffer , false , false , false ) ;
232245
233246 if ( this . autoClear )
@@ -236,7 +249,7 @@ var RenderTarget = new Class({
236249
237250 gl . clearColor ( 0 , 0 , 0 , 0 ) ;
238251
239- gl . clear ( gl . COLOR_BUFFER_BIT ) ;
252+ gl . clear ( gl . COLOR_BUFFER_BIT | gl . DEPTH_BUFFER_BIT | gl . STENCIL_BUFFER_BIT ) ;
240253 }
241254
242255 if ( adjustViewport )
@@ -246,21 +259,20 @@ var RenderTarget = new Class({
246259 } ,
247260
248261 /**
249- * Adjusts the GL viewport to match the WebGL Renderer width and height,
250- * with a y offset of `RenderTarget.height` - `WebGLRenderer.height`.
262+ * Adjusts the GL viewport to match the width and height of this Render Target.
263+ *
264+ * Also disables `SCISSOR_TEST`.
251265 *
252266 * @method Phaser.Renderer.WebGL.RenderTarget#adjustViewport
253267 * @since 3.50.0
254268 */
255269 adjustViewport : function ( )
256270 {
257- var renderer = this . renderer ;
271+ var gl = this . renderer . gl ;
258272
259- var textureWidth = this . width ;
260- var textureHeight = this . height ;
273+ gl . viewport ( 0 , 0 , this . width , this . height ) ;
261274
262- renderer . gl . viewport ( 0 , 0 , textureWidth , textureHeight ) ;
263- renderer . gl . disable ( renderer . gl . SCISSOR_TEST ) ;
275+ gl . disable ( gl . SCISSOR_TEST ) ;
264276 } ,
265277
266278 /**
@@ -301,20 +313,6 @@ var RenderTarget = new Class({
301313 if ( flush )
302314 {
303315 renderer . flush ( ) ;
304-
305- renderer . gl . enable ( renderer . gl . SCISSOR_TEST ) ;
306-
307- var scissor = renderer . currentScissor ;
308-
309- if ( scissor )
310- {
311- var x = scissor [ 0 ] ;
312- var y = scissor [ 1 ] ;
313- var width = scissor [ 2 ] ;
314- var height = scissor [ 3 ] ;
315-
316- renderer . gl . scissor ( x , ( renderer . drawingBufferHeight - y - height ) , width , height ) ;
317- }
318316 }
319317
320318 return renderer . popFramebuffer ( ) ;
0 commit comments