Преглед изворни кода

configurable shader error reporting

trethaller пре 2 година
родитељ
комит
516e67e1d1
1 измењених фајлова са 10 додато и 1 уклоњено
  1. 10 1
      h3d/pass/Default.hx

+ 10 - 1
h3d/pass/Default.hx

@@ -90,6 +90,10 @@ class Default extends Base {
 		@:privateAccess p.obj.draw(ctx);
 	}
 
+	static public dynamic function onShaderError(e: Dynamic, p: PassObject) {
+		throw e;
+	}
+
 	@:access(h3d.scene)
 	override function draw( passes : h3d.pass.PassList, ?sort : h3d.pass.PassList -> Void ) {
 		if( passes.isEmpty() )
@@ -112,7 +116,12 @@ class Default extends Base {
 				globalModelViewInverse = p.obj.getInvPos();
 			if( prevShader != p.shader ) {
 				prevShader = p.shader;
-				ctx.engine.selectShader(p.shader);
+				try {
+					ctx.engine.selectShader(p.shader);
+				} catch(e : Dynamic) {
+					onShaderError(e, p);
+					continue;
+				}
 				if( buf == null )
 					buf = ctx.shaderBuffers = new h3d.shader.Buffers(p.shader);
 				else