aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-24 17:44:00 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-24 17:44:00 -0700
commit0f5ed11b876c252edf5bf9e2716ff6096d4238d0 (patch)
treed0755254bdfe73632156d08b274321fe557d3e71
parente2bd3251993b6bb9ec39da6a5b19d32624191b10 (diff)
refactor immediate mode flushing for both glDrawArrays and glDrawElements
-rw-r--r--src/library_gl.js12
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);