Переглянути джерело

Attempt at a blind fixed for multi-monitor issues with mojo2d lighting.

Mark Sibly 8 роки тому
батько
коміт
fd6c90fa49
1 змінених файлів з 13 додано та 6 видалено
  1. 13 6
      modules/mojo/graphics/canvas.monkey2

+ 13 - 6
modules/mojo/graphics/canvas.monkey2

@@ -1123,20 +1123,27 @@ Class Canvas
 		
 		_lighting=True
 		
-		If Not _gbuffers[0]
-
-			Local gbufferSize:=New Vec2i( 1920,1080 )
-			Local gbufferScale:=New Vec2f( 1 )/Cast<Vec2f>( gbufferSize )
+		Local gbufferSize:=_device.RenderTargetSize
+		gbufferSize.x=Max( gbufferSize.x,1920 )
+		gbufferSize.y=Max( gbufferSize.y,1080 )
+	
+		If Not _gbuffers[0] Or gbufferSize.x>_gbuffers[0].Width Or gbufferSize.y>_gbuffers[0].Height
 			
 			For Local i:=0 Until 2
+	
+				If _gbuffers[i] _gbuffers[i].Discard()
+				If _gbrtargets[i] _gbrtargets[i].Discard()
+	
 				_gbuffers[i]=New Texture( gbufferSize.x,gbufferSize.y,PixelFormat.RGBA32,TextureFlags.Dynamic )
 				_gbrtargets[i]=New RenderTarget( New Texture[]( _gbuffers[i] ),Null )
 			Next
-
+	
+			Local gbufferScale:=New Vec2f( 1 )/Cast<Vec2f>( gbufferSize )
+	
 			_uniforms.SetVec2f( "GBufferScale",gbufferScale )
 			_uniforms.SetTexture( "GBuffer0",_gbuffers[0] )
 			_uniforms.SetTexture( "GBuffer1",_gbuffers[1] )
-			
+	
 		Endif
 		
 		Validate()