ソースを参照

Use triangle strip instead of fan for sprites / particle systems when in instanced mode

Popov72 4 年 前
コミット
5c0617acac
2 ファイル変更5 行追加5 行削除
  1. 2 2
      src/Particles/particleSystem.ts
  2. 3 3
      src/Sprites/spriteManager.ts

+ 2 - 2
src/Particles/particleSystem.ts

@@ -1037,7 +1037,7 @@ export class ParticleSystem extends BaseParticleSystem implements IDisposable, I
 
         var offsets: VertexBuffer;
         if (this._useInstancing) {
-            var spriteData = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);
+            var spriteData = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);
             this._spriteBuffer = new Buffer(engine, spriteData, false, 2);
             offsets = this._spriteBuffer.createVertexBuffer("offset", 0, 2);
         } else {
@@ -1959,7 +1959,7 @@ export class ParticleSystem extends BaseParticleSystem implements IDisposable, I
         }
 
         if (this._useInstancing) {
-            engine.drawArraysType(Constants.MATERIAL_TriangleFanDrawMode, 0, 4, this._particles.length);
+            engine.drawArraysType(Constants.MATERIAL_TriangleStripDrawMode, 0, 4, this._particles.length);
         } else {
             engine.drawElementsType(Constants.MATERIAL_TriangleFillMode, 0, this._particles.length * 6);
         }

+ 3 - 3
src/Sprites/spriteManager.ts

@@ -303,7 +303,7 @@ export class SpriteManager implements ISpriteManager {
         var offsets: VertexBuffer;
 
         if (this._useInstancing) {
-            var spriteData = new Float32Array([0, 0, 1, 0, 1, 1, 0, 1]);
+            var spriteData = new Float32Array([0, 0, 1, 0, 0, 1, 1, 1]);
             this._spriteBuffer = new Buffer(engine, spriteData, false, 2);
             offsets = this._spriteBuffer.createVertexBuffer("offsets", 0, 2);
         } else {
@@ -760,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);
+                engine.drawArraysType(Constants.MATERIAL_TriangleStripDrawMode, 0, 4, offset);
             } else {
                 engine.drawElementsType(Material.TriangleFillMode, 0, (offset / 4) * 6);
             }
@@ -770,7 +770,7 @@ export class SpriteManager implements ISpriteManager {
 
         engine.setAlphaMode(this._blendMode);
         if (this._useInstancing) {
-            engine.drawArraysType(Constants.MATERIAL_TriangleFanDrawMode, 0, 4, offset);
+            engine.drawArraysType(Constants.MATERIAL_TriangleStripDrawMode, 0, 4, offset);
         } else {
             engine.drawElementsType(Material.TriangleFillMode, 0, (offset / 4) * 6);
         }