From 0e2637ba54ebdd2d7adfd5ca4dc189317cce8612 Mon Sep 17 00:00:00 2001 From: finscn Date: Sun, 31 Aug 2025 01:59:44 +0800 Subject: [PATCH] =?UTF-8?q?Update=20simple.ts=20=E4=BF=AE=E6=AD=A3=20MaxGr?= =?UTF-8?q?idsLimit=20=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 虽然 写入buffer的顶点数据是6个, 但是决定 fillCount 上限的是 顶点的索引. ```ts fillBuffers (layer: TiledLayer, renderer: IBatcher): void { if (!layer || layer.tiledDataArray.length === 0) return; const dataArray = layer.tiledDataArray; // 当前渲染的数据 const data = dataArray[layer._tiledDataArrayIdx] as TiledRenderData; const renderData = data.renderData; if (!renderData) return; const iBuf = renderData.chunk.meshBuffer.iData; let indexOffset = renderData.chunk.meshBuffer.indexOffset; let vertexId = renderData.chunk.vertexOffset; const quadCount = renderData.vertexCount / 4; for (let i = 0; i < quadCount; i += 1) { iBuf[indexOffset] = vertexId; iBuf[indexOffset + 1] = vertexId + 1; iBuf[indexOffset + 2] = vertexId + 2; iBuf[indexOffset + 3] = vertexId + 2; iBuf[indexOffset + 4] = vertexId + 1; iBuf[indexOffset + 5] = vertexId + 3; indexOffset += 6; vertexId += 4; } renderData.chunk.meshBuffer.indexOffset = indexOffset; } ``` 也就是上述代码中的 vertexCount / 4 决定了 fillCount 最多是 65536 / 4 . --- cocos/tiledmap/assembler/simple.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocos/tiledmap/assembler/simple.ts b/cocos/tiledmap/assembler/simple.ts index 07d6034d6a5..372b0178690 100644 --- a/cocos/tiledmap/assembler/simple.ts +++ b/cocos/tiledmap/assembler/simple.ts @@ -36,7 +36,7 @@ import { RenderDrawInfoType } from '../../2d/renderer/render-draw-info'; import type { Texture2D } from '../../asset/assets'; import type { Node } from '../../scene-graph'; -const MaxGridsLimit = Math.ceil(65535 / 6); +const MaxGridsLimit = 65536 / 4; const vec3_temps: Vec3[] = []; for (let i = 0; i < 4; i++) {