aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-25 19:45:53 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-25 19:45:53 -0700
commite793871c95d703600aad7d2b7ef5938c4dea89fa (patch)
treeda215a8fdae328e40a3d64d4815bf0d0e0379e2b
parent6f0decb1c5c65f7873c9afadbf04ab8fed7b83a0 (diff)
forget current program and buffers if they are destroyed
-rw-r--r--src/library_gl.js16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 1b9edd3c..56684797 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -1034,6 +1034,12 @@ var LibraryGL = {
glUseProgram(program);
}
+ var glDeleteProgram = _glDeleteProgram;
+ _glDeleteProgram = function(program) {
+ glDeleteProgram(program);
+ if (program == GL.currProgram) GL.currProgram = 0;
+ };
+
var glBindBuffer = _glBindBuffer;
_glBindBuffer = function(target, buffer) {
glBindBuffer(target, buffer);
@@ -1044,6 +1050,16 @@ var LibraryGL = {
}
};
+ var glDeleteBuffers = _glDeleteBuffers;
+ _glDeleteBuffers = function(n, buffers) {
+ glDeleteBuffers(n, buffers);
+ for (var i = 0; i < n; i++) {
+ var buffer = {{{ makeGetValue('buffers', 'i*4', 'i32') }}};
+ if (buffer == GL.currArrayBuffer) GL.currArrayBuffer = 0;
+ if (buffer == GL.currElementArrayBuffer) GL.currElementArrayBuffer = 0;
+ }
+ };
+
var glGetFloatv = _glGetFloatv;
_glGetFloatv = function(pname, params) {
if (pname == 0x0BA6) { // GL_MODELVIEW_MATRIX