ソースを参照

[threejs] Fix batch capacity calculation, closes #2163

Mario Zechner 2 年 前
コミット
4c8167b885

+ 3 - 3
spine-ts/spine-threejs/src/MeshBatcher.ts

@@ -98,9 +98,9 @@ export class MeshBatcher extends THREE.Mesh {
 		this.indicesLength = 0;
 		this.indicesLength = 0;
 	}
 	}
 
 
-	canBatch (verticesLength: number, indicesLength: number) {
-		if (this.indicesLength + indicesLength >= this.indices.byteLength / 2) return false;
-		if (this.verticesLength + verticesLength >= this.vertices.byteLength / 2) return false;
+	canBatch (numVertices: number, numIndices: number) {
+		if (this.indicesLength + numIndices >= this.indices.byteLength / 2) return false;
+		if (this.verticesLength / MeshBatcher.VERTEX_SIZE + numVertices >= (this.vertices.byteLength / 4) / MeshBatcher.VERTEX_SIZE) return false;
 		return true;
 		return true;
 	}
 	}
 
 

+ 1 - 1
spine-ts/spine-threejs/src/SkeletonMesh.ts

@@ -249,7 +249,7 @@ export class SkeletonMesh extends THREE.Object3D {
 				}
 				}
 
 
 				// Start new batch if this one can't hold vertices/indices
 				// Start new batch if this one can't hold vertices/indices
-				if (!batch.canBatch(finalVerticesLength, finalIndicesLength)) {
+				if (!batch.canBatch(finalVerticesLength / SkeletonMesh.VERTEX_SIZE, finalIndicesLength)) {
 					batch.end();
 					batch.end();
 					batch = this.nextBatch();
 					batch = this.nextBatch();
 					batch.begin();
 					batch.begin();