aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/library_gl.js90
1 files changed, 50 insertions, 40 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 593f97a8..420e8add 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -1281,44 +1281,10 @@ var LibraryGL = {
case 'glCreateProgramObject': case 'glCreateProgram': func = _glCreateProgram; sig = 'ii'; break;
case 'glAttachObject': case 'glAttachShader': func = _glAttachShader; sig = 'vi'; break;
case 'glUseProgramObject': case 'glUseProgram': func = _glUseProgram; sig = 'vi'; break;
- case 'glDeleteObject': func = function(id) {
- if (GL.programs[id]) {
- _glDeleteProgram(id);
- } else if (GL.shaders[id]) {
- _glDeleteShader(id);
- } else {
- Module.printErr('WARNING: deleteObject received invalid id: ' + id);
- }
- }; sig = 'vi'; break;
- case 'glGetObjectParameteriv': func = function(id, type, result) {
- if (GL.programs[id]) {
- if (type == 0x8B84) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
- {{{ makeSetValue('result', '0', 'Module.ctx.getProgramInfoLog(GL.programs[id]).length', 'i32') }}};
- return;
- }
- _glGetProgramiv(id, type, result);
- } else if (GL.shaders[id]) {
- if (type == 0x8B84) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
- {{{ makeSetValue('result', '0', 'Module.ctx.getShaderInfoLog(GL.shaders[id]).length', 'i32') }}};
- return;
- }
- _glGetShaderiv(id, type, result);
- } else {
- Module.printErr('WARNING: getObjectParameteriv received invalid id: ' + id);
- }
- }; sig = 'viii'; break;
- case 'glGetInfoLog': func = function(id, maxLength, length, infoLog) {
- if (GL.programs[id]) {
- _glGetProgramInfoLog(id, maxLength, length, infoLog);
- } else if (GL.shaders[id]) {
- _glGetShaderInfoLog(id, maxLength, length, infoLog);
- } else {
- Module.printErr('WARNING: getObjectParameteriv received invalid id: ' + id);
- }
- }; sig = 'viiii'; break;
- case 'glBindProgram': func = function(type, id) {
- assert(id == 0);
- }; sig = 'vii'; break;
+ case 'glDeleteObject': func = _glDeleteObject; sig = 'vi'; break;
+ case 'glGetObjectParameteriv': func = _glGetObjectParameteriv; sig = 'viii'; break;
+ case 'glGetInfoLog': func = _glGetInfoLog; sig = 'viiii'; break;
+ case 'glBindProgram': func = _glBindProgram; sig = 'vii'; break;
case 'glDrawRangeElements': func = _glDrawRangeElements; sig = 'viiiiii'; break;
case 'glShaderSource': func = _glShaderSource; sig = 'viiii'; break;
case 'glCompileShader': func = _glCompileShader; sig = 'vi'; break;
@@ -1380,6 +1346,48 @@ var LibraryGL = {
}
},
+ glDeleteObject: function(id) {
+ if (GL.programs[id]) {
+ _glDeleteProgram(id);
+ } else if (GL.shaders[id]) {
+ _glDeleteShader(id);
+ } else {
+ Module.printErr('WARNING: deleteObject received invalid id: ' + id);
+ }
+ },
+
+ glGetObjectParameteriv: function(id, type, result) {
+ if (GL.programs[id]) {
+ if (type == 0x8B84) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
+ {{{ makeSetValue('result', '0', 'Module.ctx.getProgramInfoLog(GL.programs[id]).length', 'i32') }}};
+ return;
+ }
+ _glGetProgramiv(id, type, result);
+ } else if (GL.shaders[id]) {
+ if (type == 0x8B84) { // GL_OBJECT_INFO_LOG_LENGTH_ARB
+ {{{ makeSetValue('result', '0', 'Module.ctx.getShaderInfoLog(GL.shaders[id]).length', 'i32') }}};
+ return;
+ }
+ _glGetShaderiv(id, type, result);
+ } else {
+ Module.printErr('WARNING: getObjectParameteriv received invalid id: ' + id);
+ }
+ },
+
+ glGetInfoLog: function(id, maxLength, length, infoLog) {
+ if (GL.programs[id]) {
+ _glGetProgramInfoLog(id, maxLength, length, infoLog);
+ } else if (GL.shaders[id]) {
+ _glGetShaderInfoLog(id, maxLength, length, infoLog);
+ } else {
+ Module.printErr('WARNING: getObjectParameteriv received invalid id: ' + id);
+ }
+ },
+
+ glBindProgram: function(type, id) {
+ assert(id == 0);
+ },
+
// GL Immediate mode
$GLImmediate__postset: 'GL.immediate.setupFuncs(); Browser.moduleContextCreatedCallbacks.push(function() { GL.immediate.init() });',
@@ -2505,12 +2513,14 @@ var LibraryGL = {
autoAddDeps(LibraryGL, '$GL');
// Emulation requires everything else, potentially
-LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.slice(0);
+LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.slice(0); // the __deps object is shared
+var glFuncs = [];
for (var item in LibraryGL) {
if (item != '$GLEmulation' && item.substr(-6) != '__deps' && item.substr(-9) != '__postset' && item.substr(0, 2) == 'gl') {
- LibraryGL.$GLEmulation__deps.push(item);
+ glFuncs.push(item);
}
}
+LibraryGL.$GLEmulation__deps = LibraryGL.$GLEmulation__deps.concat(glFuncs);
mergeInto(LibraryManager.library, LibraryGL);