diff --git a/src/mesh/Mesh.js b/src/mesh/Mesh.js index ffc4c18..872ab35 100644 --- a/src/mesh/Mesh.js +++ b/src/mesh/Mesh.js @@ -31,16 +31,19 @@ readFileSync(join(__dirname, './webgl/mesh.frag'), 'utf8')); } - geometry.addAttribute('aVertexPosition', vertices, 2 * 4) - .addAttribute('aTextureCoord', uvs, 2 * 4) + geometry.addAttribute('aVertexPosition', vertices) + .addAttribute('aTextureCoord', uvs) .addIndex(indices); + geometry.getAttribute('aVertexPosition').static = false; + const uniforms = { uSampler2: texture, alpha: 1, tint: new Float32Array([1, 1, 1]), }; + super(geometry, meshShader, uniforms, null, drawMode); this.texture = texture; diff --git a/src/mesh/Mesh.js b/src/mesh/Mesh.js index ffc4c18..872ab35 100644 --- a/src/mesh/Mesh.js +++ b/src/mesh/Mesh.js @@ -31,16 +31,19 @@ readFileSync(join(__dirname, './webgl/mesh.frag'), 'utf8')); } - geometry.addAttribute('aVertexPosition', vertices, 2 * 4) - .addAttribute('aTextureCoord', uvs, 2 * 4) + geometry.addAttribute('aVertexPosition', vertices) + .addAttribute('aTextureCoord', uvs) .addIndex(indices); + geometry.getAttribute('aVertexPosition').static = false; + const uniforms = { uSampler2: texture, alpha: 1, tint: new Float32Array([1, 1, 1]), }; + super(geometry, meshShader, uniforms, null, drawMode); this.texture = texture; diff --git a/src/mesh/geometry/Buffer.js b/src/mesh/geometry/Buffer.js index 1fc8ef6..43d49bf 100644 --- a/src/mesh/geometry/Buffer.js +++ b/src/mesh/geometry/Buffer.js @@ -33,6 +33,8 @@ this.index = false; + this.static = true; + this.id = UID++; } diff --git a/src/mesh/Mesh.js b/src/mesh/Mesh.js index ffc4c18..872ab35 100644 --- a/src/mesh/Mesh.js +++ b/src/mesh/Mesh.js @@ -31,16 +31,19 @@ readFileSync(join(__dirname, './webgl/mesh.frag'), 'utf8')); } - geometry.addAttribute('aVertexPosition', vertices, 2 * 4) - .addAttribute('aTextureCoord', uvs, 2 * 4) + geometry.addAttribute('aVertexPosition', vertices) + .addAttribute('aTextureCoord', uvs) .addIndex(indices); + geometry.getAttribute('aVertexPosition').static = false; + const uniforms = { uSampler2: texture, alpha: 1, tint: new Float32Array([1, 1, 1]), }; + super(geometry, meshShader, uniforms, null, drawMode); this.texture = texture; diff --git a/src/mesh/geometry/Buffer.js b/src/mesh/geometry/Buffer.js index 1fc8ef6..43d49bf 100644 --- a/src/mesh/geometry/Buffer.js +++ b/src/mesh/geometry/Buffer.js @@ -33,6 +33,8 @@ this.index = false; + this.static = true; + this.id = UID++; } diff --git a/src/mesh/webgl/MeshRenderer.js b/src/mesh/webgl/MeshRenderer.js index 6af9a08..da5d553 100644 --- a/src/mesh/webgl/MeshRenderer.js +++ b/src/mesh/webgl/MeshRenderer.js @@ -90,6 +90,7 @@ { glBuffer._updateID = buffer._updateID; // TODO - partial upload?? + glBuffer.upload(buffer.data, 0); } } @@ -104,6 +105,7 @@ */ initGeometryVao(geometry, glShader) { + const gl = this.gl; this.renderer.bindVao(null); @@ -126,7 +128,7 @@ } else { - buffer._glBuffers[this.CONTEXT_UID] = glCore.GLBuffer.createVertexBuffer(gl, buffer.data); + buffer._glBuffers[this.CONTEXT_UID] = glCore.GLBuffer.createVertexBuffer(gl, buffer.data, buffer.static ? gl.STATIC_DRAW : gl.DYNAMIC_DRAW ); } } }