diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-02-22 10:23:29 -0800 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-02-22 10:23:29 -0800 |
commit | 6bee6bb0630a1622c5a28146f044ee6333ec8d03 (patch) | |
tree | 989bfe0c7d746c9fc074a2ce7e86cb375af647e2 /src/library_gl.js | |
parent | 557ef71e2f492878ef5f7f0ea71421babc40b4bb (diff) |
save client states in vertex array objects
Diffstat (limited to 'src/library_gl.js')
-rw-r--r-- | src/library_gl.js | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 2c3be61c..8a3dc8a8 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -1469,6 +1469,9 @@ var LibraryGL = { case 'glIsFramebuffer': ret = {{{ Functions.getIndex('_glIsFramebuffer', true) }}}; break; case 'glCheckFramebufferStatus': ret = {{{ Functions.getIndex('_glCheckFramebufferStatus', true) }}}; break; case 'glRenderbufferStorage': ret = {{{ Functions.getIndex('_glRenderbufferStorage', true) }}}; break; + case 'glGenVertexArrays': ret = {{{ Functions.getIndex('_glGenVertexArrays', true) }}}; break; + case 'glDeleteVertexArrays': ret = {{{ Functions.getIndex('_glDeleteVertexArrays', true) }}}; break; + case 'glBindVertexArray': ret = {{{ Functions.getIndex('_glBindVertexArray', true) }}}; break; } if (!ret) Module.printErr('WARNING: getProcAddress failed for ' + name); return ret; @@ -2469,9 +2472,11 @@ var LibraryGL = { if (disable && GL.immediate.enabledClientAttributes[attrib]) { GL.immediate.enabledClientAttributes[attrib] = false; GL.immediate.totalEnabledClientAttributes--; + if (GLEmulation.currentVao) delete GLEmulation.currentVao.enabledClientStates[cap]; } else if (!disable && !GL.immediate.enabledClientAttributes[attrib]) { GL.immediate.enabledClientAttributes[attrib] = true; GL.immediate.totalEnabledClientAttributes++; + if (GLEmulation.currentVao) GLEmulation.currentVao.enabledClientStates[cap] = 1; } GL.immediate.modifiedClientAttributes = true; }, @@ -2509,6 +2514,7 @@ var LibraryGL = { elementArrayBuffer: 0, enabledVertexAttribArrays: {}, vertexAttribPointers: {}, + enabledClientStates: {}, }; {{{ makeSetValue('vaos', 'i*4', 'id', 'i32') }}}; } @@ -2533,6 +2539,9 @@ var LibraryGL = { for (var vaa in info.vertexAttribPointers) { _glVertexAttribPointer.apply(null, info.vertexAttribPointers[vaa]); } + for (var attrib in info.enabledClientStates) { + _glEnableClientState(attrib|0); + } GLEmulation.currentVao = info; // set currentVao last, so the commands we ran here were not recorded } else if (GLEmulation.currentVao) { // undo vao @@ -2543,6 +2552,9 @@ var LibraryGL = { for (var vaa in info.enabledVertexAttribArrays) { _glDisableVertexAttribArray(vaa); } + for (var attrib in info.enabledClientStates) { + _glDisableClientState(attrib|0); + } } }, |