Bläddra i källkod

Fix sprite bugs with instances

David `Deltakosh` Catuhe 5 år sedan
förälder
incheckning
8e84e0a55a
1 ändrade filer med 4 tillägg och 2 borttagningar
  1. 4 2
      src/Sprites/spriteManager.ts

+ 4 - 2
src/Sprites/spriteManager.ts

@@ -286,10 +286,12 @@ export class SpriteManager implements ISpriteManager {
             }
 
             this._indexBuffer = engine.createIndexBuffer(indices);
+        } else {
         }
 
         // VBO
         // 18 floats per sprite (x, y, z, angle, sizeX, sizeY, offsetX, offsetY, invertU, invertV, cellLeft, cellTop, cellWidth, cellHeight, color r, color g, color b, color a)
+        // 16 when using instances
         this._vertexBufferSize = this._useInstancing ? 16 : 18;
         this._vertexData = new Float32Array(capacity * this._vertexBufferSize * (this._useInstancing ? 1 : 4));
         this._buffer = new Buffer(engine, this._vertexData, true, this._vertexBufferSize);
@@ -758,7 +760,7 @@ export class SpriteManager implements ISpriteManager {
             effect.setBool("alphaTest", true);
             engine.setColorWrite(false);
             if (this._useInstancing) {
-                engine.drawArraysType(Constants.MATERIAL_TriangleFanDrawMode, 0, 4, (offset / 4));
+                engine.drawArraysType(Constants.MATERIAL_TriangleFanDrawMode, 0, 4, offset);
             } else {
                 engine.drawElementsType(Material.TriangleFillMode, 0, (offset / 4) * 6);
             }
@@ -768,7 +770,7 @@ export class SpriteManager implements ISpriteManager {
 
         engine.setAlphaMode(this._blendMode);
         if (this._useInstancing) {
-            engine.drawArraysType(Constants.MATERIAL_TriangleFanDrawMode, 0, 4, (offset / 4));
+            engine.drawArraysType(Constants.MATERIAL_TriangleFanDrawMode, 0, 4, offset);
         } else {
             engine.drawElementsType(Material.TriangleFillMode, 0, (offset / 4) * 6);
         }