@@ -63,6 +63,18 @@ var RenderPass = new Class({
6363 this . setPosition ( x , y ) ;
6464 this . setSize ( width , height ) ;
6565 this . setOrigin ( 0 , 0 ) ;
66+
67+ var _this = this ;
68+ scene . sys . game . renderer . addContextRestoredCallback ( function ( renderer ) {
69+ var gl = renderer . gl ;
70+ var wrap = pot ? gl . REPEAT : gl . CLAMP_TO_EDGE ;
71+ _this . passShader = resourceManager . createShader ( shaderName , { vert : TexturedAndNormalizedTintedShader . vert , frag : fragmentShader } ) ;
72+ _this . renderTexture = resourceManager . createTexture ( 0 , gl . LINEAR , gl . LINEAR , wrap , wrap , gl . RGBA , null , _this . width , _this . height ) ;
73+ _this . passRenderTarget = resourceManager . createRenderTarget ( _this . width , _this . height , _this . renderTexture , null ) ;
74+ _this . uniforms = { } ;
75+ _this . textures = { } ;
76+ scene . sys . game . renderer . currentTexture [ 0 ] = null ; // force rebinding of prev texture
77+ } ) ;
6678 } ,
6779
6880 clearColorBuffer : function ( r , g , b , a )
@@ -109,12 +121,13 @@ var RenderPass = new Class({
109121
110122 render : function ( gameObject , camera )
111123 {
112- var gl = this . renderer . gl ;
124+ var renderer = this . renderer ;
125+ var gl = renderer . gl ;
113126
114- if ( gl )
127+ if ( gl && ! renderer . contextLost )
115128 {
116- this . renderer . setRenderer ( this . renderer . spriteBatch , null , null ) ;
117- this . renderer . spriteBatch . addSprite ( gameObject , camera ) ;
129+ renderer . setRenderer ( this . renderer . spriteBatch , null , null ) ;
130+ renderer . spriteBatch . addSprite ( gameObject , camera ) ;
118131 for ( var key in this . textures )
119132 {
120133 var textureData = this . textures [ key ] ;
@@ -123,18 +136,19 @@ var RenderPass = new Class({
123136 gl . bindTexture ( gl . TEXTURE_2D , textureData . texture ) ;
124137 gl . activeTexture ( gl . TEXTURE0 ) ;
125138 }
126- this . renderer . spriteBatch . flush ( this . passShader , this . passRenderTarget . framebufferObject ) ;
139+ renderer . spriteBatch . flush ( this . passShader , this . passRenderTarget . framebufferObject ) ;
127140 }
128141 } ,
129142
130143 renderRect : function ( x , y , width , height , camera )
131144 {
132- var gl = this . renderer . gl ;
145+ var renderer = this . renderer ;
146+ var gl = renderer . gl ;
133147
134- if ( gl )
148+ if ( gl && ! renderer . contextLost )
135149 {
136- this . renderer . setRenderer ( this . renderer . spriteBatch , null , null ) ;
137- this . renderer . spriteBatch . addTileTextureRect (
150+ renderer . setRenderer ( this . renderer . spriteBatch , null , null ) ;
151+ renderer . spriteBatch . addTileTextureRect (
138152 null , x , y , width , height , 1.0 , 0xFFFFFFFF , this . scrollFactorX , this . scrollFactorY ,
139153 width , height , 0 , 0 , width , height , camera , null
140154 ) ;
@@ -146,15 +160,16 @@ var RenderPass = new Class({
146160 gl . bindTexture ( gl . TEXTURE_2D , textureData . texture ) ;
147161 gl . activeTexture ( gl . TEXTURE0 ) ;
148162 }
149- this . renderer . spriteBatch . flush ( this . passShader , this . passRenderTarget . framebufferObject ) ;
163+ renderer . spriteBatch . flush ( this . passShader , this . passRenderTarget . framebufferObject ) ;
150164 }
151165 } ,
152166
153167 setRenderTextureAt : function ( renderTexture , samplerName , unit )
154168 {
155- var gl = this . renderer . gl ;
169+ var renderer = this . renderer ;
170+ var gl = renderer . gl ;
156171
157- if ( gl )
172+ if ( gl && ! renderer . contextLost )
158173 {
159174 /* Texture 1 is reserved for Phasers Main Renderer */
160175 unit = ( unit > 0 ) ? unit : 1 ;
0 commit comments