diff --git a/src/mesh/Mesh.js b/src/mesh/Mesh.js index 4ed6a27..4990744 100644 --- a/src/mesh/Mesh.js +++ b/src/mesh/Mesh.js @@ -77,6 +77,21 @@ this.indexDirty = 0; /** + * Version of mesh verticies array + * + * @member {number} + */ + this.vertexDirty = 0; + + /** + * For backwards compatibility the default is to re-upload verticies each render call. + * Set this to `false` and increase `vertexDirty` to manually re-upload the buffer. + * + * @member {boolean} + */ + this.autoVertexUpdate = true; + + /** * The blend mode to be applied to the sprite. Set to `PIXI.BLEND_MODES.NORMAL` to remove * any blend mode. * @@ -210,6 +225,10 @@ */ refresh(forceUpdate) { + if (this.autoVertexUpdate) + { + this.vertexDirty++; + } if (this._uvTransform.update(forceUpdate)) { this._refresh(); diff --git a/src/mesh/Mesh.js b/src/mesh/Mesh.js index 4ed6a27..4990744 100644 --- a/src/mesh/Mesh.js +++ b/src/mesh/Mesh.js @@ -77,6 +77,21 @@ this.indexDirty = 0; /** + * Version of mesh verticies array + * + * @member {number} + */ + this.vertexDirty = 0; + + /** + * For backwards compatibility the default is to re-upload verticies each render call. + * Set this to `false` and increase `vertexDirty` to manually re-upload the buffer. + * + * @member {boolean} + */ + this.autoVertexUpdate = true; + + /** * The blend mode to be applied to the sprite. Set to `PIXI.BLEND_MODES.NORMAL` to remove * any blend mode. * @@ -210,6 +225,10 @@ */ refresh(forceUpdate) { + if (this.autoVertexUpdate) + { + this.vertexDirty++; + } if (this._uvTransform.update(forceUpdate)) { this._refresh(); diff --git a/src/mesh/webgl/MeshRenderer.js b/src/mesh/webgl/MeshRenderer.js index d1f599f..42ad3cd 100644 --- a/src/mesh/webgl/MeshRenderer.js +++ b/src/mesh/webgl/MeshRenderer.js @@ -73,6 +73,7 @@ vao: null, dirty: mesh.dirty, indexDirty: mesh.indexDirty, + vertexDirty: mesh.vertexDirty, }; // build the vao object that will render.. @@ -98,7 +99,11 @@ glData.indexBuffer.upload(mesh.indices); } - glData.vertexBuffer.upload(mesh.vertices); + if (mesh.vertexDirty !== glData.vertexDirty) + { + glData.vertexDirty = mesh.vertexDirty; + glData.vertexBuffer.upload(mesh.vertices); + } renderer.bindShader(glData.shader);