@@ -256,13 +256,20 @@ var RenderTarget = new Class({
256256 {
257257 var renderer = this . renderer ;
258258
259+ var textureWidth = this . width ;
260+ var textureHeight = this . height ;
261+
259262 var rendererWidth = renderer . width ;
260263 var rendererHeight = renderer . height ;
261264
265+ var width = Math . max ( textureWidth , rendererWidth ) ;
266+ var height = Math . max ( textureHeight , rendererHeight ) ;
267+
262268 var x = 0 ;
263- var y = this . height - rendererHeight ;
269+ var y = ( textureHeight < rendererHeight ) ? textureHeight - rendererHeight : Math . abs ( rendererHeight - textureHeight ) ;
264270
265- renderer . gl . viewport ( x , y , rendererWidth , rendererHeight ) ;
271+ renderer . gl . viewport ( x , y , width , height ) ;
272+ renderer . gl . disable ( renderer . gl . SCISSOR_TEST ) ;
266273 } ,
267274
268275 /**
@@ -298,12 +305,24 @@ var RenderTarget = new Class({
298305 {
299306 if ( flush === undefined ) { flush = false ; }
300307
308+ var renderer = this . renderer ;
309+
301310 if ( flush )
302311 {
303- this . renderer . flush ( ) ;
312+ renderer . flush ( ) ;
313+
314+ var scissor = renderer . currentScissor ;
315+ var x = scissor [ 0 ] ;
316+ var y = scissor [ 1 ] ;
317+ var width = scissor [ 2 ] ;
318+ var height = scissor [ 3 ] ;
319+
320+ renderer . gl . enable ( renderer . gl . SCISSOR_TEST ) ;
321+
322+ renderer . gl . scissor ( x , ( renderer . drawingBufferHeight - y - height ) , width , height ) ;
304323 }
305324
306- return this . renderer . popFramebuffer ( ) ;
325+ return renderer . popFramebuffer ( ) ;
307326 } ,
308327
309328 /**
0 commit comments