diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-24 17:44:00 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-24 17:44:00 -0700 |
commit | 0f5ed11b876c252edf5bf9e2716ff6096d4238d0 (patch) | |
tree | d0755254bdfe73632156d08b274321fe557d3e71 | |
parent | e2bd3251993b6bb9ec39da6a5b19d32624191b10 (diff) |
refactor immediate mode flushing for both glDrawArrays and glDrawElements
-rw-r--r-- | src/library_gl.js | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 79add78b..ea0301ac 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1359,7 +1359,7 @@ var LibraryGL = { var renderer = GL.immediate.prepareClientAttributes(count); GL.immediate.mode = mode; GL.immediate.setRenderer(renderer); - GL.immediate.flush(); + GL.immediate.flush(count); }; }, @@ -1397,7 +1397,7 @@ var LibraryGL = { return renderer; }, - flush: function() { + flush: function(numProvidedIndexes) { var renderer = this.setRenderer(this.renderer); // Generate index data in a format suitable for GLES 2.0/WebGL @@ -1406,7 +1406,9 @@ var LibraryGL = { assert(numVertexes % 1 == 0); var numIndexes = 0; - if (GL.immediate.mode > 6) { // above GL_TRIANGLE_FAN are the non-GL ES modes + if (numProvidedIndexes) { + numIndexes = numProvidedIndexes; + } else if (GL.immediate.mode > 6) { // above GL_TRIANGLE_FAN are the non-GL ES modes if (GL.immediate.mode == 7) { // GL_QUADS var numQuads = numVertexes / 4; assert(numQuads % 1 == 0); @@ -1438,7 +1440,9 @@ var LibraryGL = { renderer.prepare(); if (numIndexes) { - Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, this.indexObject); + if (!numProvidedIndexes) { + Module.ctx.bindBuffer(Module.ctx.ELEMENT_ARRAY_BUFFER, this.indexObject); + } Module.ctx.drawElements(Module.ctx.TRIANGLES, numIndexes, Module.ctx.UNSIGNED_SHORT, 0); } else { Module.ctx.drawArrays(GL.immediate.mode, 0, numVertexes); |