Pārlūkot izejas kodu

Fix LoadingScene render target

TothBenoit 1 gadu atpakaļ
vecāks
revīzija
4c5d21dada
1 mainītis faili ar 17 papildinājumiem un 1 dzēšanām
  1. 17 1
      h2d/LoadingScene.hx

+ 17 - 1
h2d/LoadingScene.hx

@@ -1,11 +1,12 @@
 package h2d;
 
 class LoadingScene extends h2d.Scene {
-
+	var renderTarget : h3d.mat.Texture;
 	var presentCooldown : Float;
 	public function new(presentCooldown : Float) {
 		super();
 		this.presentCooldown = presentCooldown;
+		renderTarget = new h3d.mat.Texture(width, height, [Target]);
 	}
 
 	var lastPresentTime : Float = 0.0;
@@ -22,7 +23,22 @@ class LoadingScene extends h2d.Scene {
 	#elseif hlsdl
 		sdl.Sdl.processEvents(@:privateAccess hxd.Window.inst.onEvent);
 	#end
+
+		if ( renderTarget.width != engine.width || renderTarget.height != engine.height) {
+			renderTarget.dispose();
+			renderTarget = new h3d.mat.Texture(engine.width, engine.height, [Target]);
+		}
+
+		engine.pushTarget(renderTarget);
 		super.render(engine);
+		engine.popTarget();
+		h3d.pass.Copy.run(renderTarget, null);
 		engine.driver.present();
 	}
+
+	override function onRemove() {
+		super.onRemove();
+		if ( renderTarget != null )
+			renderTarget.dispose();
+	} 
 }