소스 검색

Merge pull request #1299 from nockawa/CanvasVis

Fixing continuous transparent segment with identical zOrder
Loïc Baumann 9 년 전
부모
커밋
1f4cf23b01
3개의 변경된 파일4개의 추가작업 그리고 16개의 파일을 삭제
  1. 1 1
      src/Canvas2d/babylon.group2d.ts
  2. 1 1
      src/Canvas2d/babylon.modelRenderCache.ts
  3. 2 14
      src/Canvas2d/babylon.renderablePrim2d.ts

+ 1 - 1
src/Canvas2d/babylon.group2d.ts

@@ -551,7 +551,7 @@
 
                 // We've made it so far, the tpi can be part of the segment, add it
                 tpi._transparentSegment = seg;
-                seg.endDataIndex = tpi._primitive._getPrimitiveLastIndex();
+                tpi._primitive._updateTransparentSegmentIndices(seg);
 
                 return true;
             }

+ 1 - 1
src/Canvas2d/babylon.modelRenderCache.ts

@@ -127,7 +127,7 @@
             this.groupInsanceInfo = null;
             this.startZ = 0;
             this.endZ = 0;
-            this.startDataIndex = 0;
+            this.startDataIndex = Prim2DBase._bigInt;
             this.endDataIndex = 0;
             this.partBuffers = null;
         }

+ 2 - 14
src/Canvas2d/babylon.renderablePrim2d.ts

@@ -742,24 +742,12 @@
                         minOff = Math.min(minOff, el.offset);
                         maxOff = Math.max(maxOff, el.offset);
                     }
-                    ts.startDataIndex = minOff / part.dataBuffer.stride;
-                    ts.endDataIndex = (maxOff / part.dataBuffer.stride) + 1; // +1 for exclusive
+                    ts.startDataIndex = Math.min(ts.startDataIndex, minOff / part.dataBuffer.stride);
+                    ts.endDataIndex = Math.max(ts.endDataIndex, (maxOff / part.dataBuffer.stride) + 1); // +1 for exclusive
                 }
             }
         }
 
-        _getPrimitiveLastIndex(): number {
-            let maxOff = 0;
-
-            for (let part of this._instanceDataParts) {
-                if (part) {
-                    for (let el of part.dataElements) {
-                        maxOff = Math.max(maxOff, el.offset);
-                    }
-                    return (maxOff / part.dataBuffer.stride) + 1; // +1 for exclusive
-                }
-            }
-        }
 
         // This internal method is mainly used for transparency processing
         public _getNextPrimZOrder(): number {