diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-08 19:41:25 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-08 19:41:25 -0700 |
commit | 6931fceaefe3bb116197ff59c0ce51d2a88f63a7 (patch) | |
tree | c1794c18abb700cb517e83fe298568e08dd3be0b | |
parent | 14f111041c952b0a1bb82c453d8f5a853869c7cb (diff) |
more gl emulation
-rw-r--r-- | src/library_gl.js | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index ceca2738..5f811170 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -754,23 +754,34 @@ var LibraryGL = { // GL emulation: provides misc. functionality not present in OpenGL ES 2.0 or WebGL - $GLEmulation__deps: ['glCreateShader'], + $GLEmulation__deps: ['glCreateShader', 'glShaderSource', 'glCompileShader', 'glCreateProgram', 'glDeleteShader', 'glDeleteProgram'], $GLEmulation: { procReplacements: { - 'glCreateShaderObjectARB': 'glCreateShader' + 'glCreateShaderObjectARB': 'glCreateShader', + 'glShaderSourceARB': 'glShaderSource', + 'glCompileShaderARB': 'glCompileShader', + 'glCreateProgramObjectARB': 'glCreateProgram', + }, + + procs: { + glDeleteObjectARB: function() { + console.log('WARNING: not deleting through glDeleteObject, not sure if shader or program'); + } }, getProcAddress: function(name_) { name_ = GLEmulation.procReplacements[name_] || name_; - var func; - try { - func = eval('_' + name_); - } catch(e) { - console.log('WARNING: getProcAddress failed for ' + name_); - func = function() { - console.log('WARNING: empty replacement for ' + name_ + ' called, no-op'); - return 0; - }; + var func = GLEmulation.procs[name_]; + if (!func) { + try { + func = eval('_' + name_); + } catch(e) { + console.log('WARNING: getProcAddress failed for ' + name_); + func = function() { + console.log('WARNING: empty replacement for ' + name_ + ' called, no-op'); + return 0; + }; + } } return Runtime.addFunction(func); } |