瀏覽代碼

Fix mesh batch instanced dispose.

clementlandrin 5 月之前
父節點
當前提交
e141291bcf
共有 2 個文件被更改,包括 10 次插入4 次删除
  1. 4 1
      h3d/scene/GPUMeshBatch.hx
  2. 6 3
      h3d/scene/MeshBatch.hx

+ 4 - 1
h3d/scene/GPUMeshBatch.hx

@@ -311,6 +311,9 @@ class GPUMeshBatch extends MeshBatch {
 	}
 
 	override function cleanPasses() {
+		if ( instanced.commands != null )
+			@:privateAccess instanced.commands.data = null;
+
 		super.cleanPasses();
 
 		var alloc = hxd.impl.Allocator.get();
@@ -336,7 +339,7 @@ class GPUBatchData extends BatchData {
 	public var commandBuffers : Array<h3d.Buffer>;
 	public var countBuffers : Array<h3d.Buffer>;
 
-	override function clean() {
+	override function clean() {		
 		super.clean();
 
 		var alloc = hxd.impl.Allocator.get();

+ 6 - 3
h3d/scene/MeshBatch.hx

@@ -58,6 +58,11 @@ class MeshBatch extends MultiMaterial {
 	 */
 	public var lodDistance : Float;
 
+	/**
+	 * If set, use this lod in emitInstance()
+	 */
+	public var curLod : Int = -1;
+
 	public function new( primitive, ?material, ?parent ) {
 		instanced = new h3d.prim.Instanced();
 		instanced.commands = new h3d.impl.InstanceBuffer();
@@ -542,10 +547,8 @@ class MeshBatch extends MultiMaterial {
 			dataPasses = dataPasses.next;
 		}
 
-		if( instanced.commands != null ) {
+		if( instanced.commands != null )
 			instanced.commands.dispose();
-			@:privateAccess instanced.commands.data = null;
-		}
 
 		primitiveSubBytes = null;
 		shadersChanged = true;