diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-06-07 14:41:54 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-06-07 14:41:54 -0700 |
commit | d807da00c14c5543ddaf426e63e4830e31184b9a (patch) | |
tree | 03f1ce90970c34af964c36b8b8f3a5adcd2bf704 /src | |
parent | 915addb565d0ca56f7195f6a75b04496813e1e6a (diff) |
clean up the last renderer on any glEnable/glDisable
Diffstat (limited to 'src')
-rw-r--r-- | src/library_gl.js | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index f18851a2..153473f1 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -906,10 +906,14 @@ var LibraryGL = { 0x0C61: 1 // GL_TEXTURE_GEN_T }; _glEnable = function(cap) { + // Clean up the renderer on any change to the rendering state. The optimization of + // skipping renderer setup is aimed at the case of multiple glDraw* right after each other + if (GL.immediate.lastRenderer) GL.immediate.lastRenderer.cleanup(); if (cap in ignoredCapabilities) return; Module.ctx.enable(cap); }; _glDisable = function(cap) { + if (GL.immediate.lastRenderer) GL.immediate.lastRenderer.cleanup(); if (cap in ignoredCapabilities) return; Module.ctx.disable(cap); }; @@ -1643,6 +1647,8 @@ var LibraryGL = { GL.immediate.lastRenderer = null; GL.immediate.lastArrayBuffer = null; + GL.immediate.lastProgram = null; + GL.immediate.matricesModified = true; } }; ret.init(); |