Browse Source

fixed shaders handling (was not reuploading globals while constants are part of them)

Nicolas Cannasse 11 năm trước cách đây
mục cha
commit
46644fba95
1 tập tin đã thay đổi với 3 bổ sung5 xóa
  1. 3 5
      h2d/RenderContext.hx

+ 3 - 5
h2d/RenderContext.hx

@@ -39,11 +39,8 @@ class RenderContext {
 		currentObj = null;
 		bufPos = 0;
 		stride = 0;
-		if( compiledShader == null )
-			initShaders([baseShader]);
-		engine.selectShader(compiledShader);
+		initShaders([baseShader]);
 		engine.selectMaterial(pass);
-		engine.uploadShaderBuffers(buffers, Globals);
 	}
 
 	function initShaders( shaders ) {
@@ -51,6 +48,8 @@ class RenderContext {
 		compiledShader = manager.compileShaders(shaders);
 		buffers = new h3d.shader.Buffers(compiledShader);
 		manager.fillGlobals(buffers, compiledShader);
+		engine.selectShader(compiledShader);
+		engine.uploadShaderBuffers(buffers, Globals);
 	}
 
 	public function end() {
@@ -138,7 +137,6 @@ class RenderContext {
 			ns.unshift(baseShader);
 			baseShader.isRelative = isRelative;
 			initShaders(ns);
-			engine.selectShader(compiledShader);
 		} else if( paramsChanged ) {
 			flush();
 			// copy so the next flush will fetch their params