瀏覽代碼

LODs: add culled lod

lviguier 9 月之前
父節點
當前提交
189273f480
共有 2 個文件被更改,包括 12 次插入3 次删除
  1. 3 1
      h3d/prim/HMDModel.hx
  2. 9 2
      h3d/prim/ModelDatabase.hx

+ 3 - 1
h3d/prim/HMDModel.hx

@@ -304,10 +304,12 @@ class HMDModel extends MeshPrimitive {
 			return 0;
 
 		var lodConfig = getLodConfig();
-		if ( lodConfig != null && lodConfig.length >= lodCount - 1) {
+		if ( lodConfig != null ) {
 			var lodLevel : Int = 0;
 			var maxIter = ( ( lodConfig.length > lodCount - 1 ) ? lodCount - 1: lodConfig.length );
 			for ( i in 0...maxIter ) {
+				if ( lodConfig[i] == 0.0 )
+					return lodLevel;
 				if ( lodConfig[i] > screenRatio )
 					lodLevel++;
 				else

+ 9 - 2
h3d/prim/ModelDatabase.hx

@@ -80,8 +80,15 @@ class ModelDatabase {
 			}
 		}
 
-		if (!isDefaultConfig)
-			Reflect.setField(lodConfigObj, name, @:privateAccess hmd.lodConfig);
+		if (!isDefaultConfig) {
+			var c = [];
+			for (idx in 0...hmd.lodCount()) {
+				c[idx] = @:privateAccess hmd.lodConfig[idx];
+				if (c[idx] == null)
+					c[idx] = 0;
+			}
+			Reflect.setField(lodConfigObj, name, c);
+		}
 		else
 			Reflect.deleteField(lodConfigObj, name);