diff options
Diffstat (limited to 'src/library_gl.js')
-rw-r--r-- | src/library_gl.js | 37 |
1 files changed, 23 insertions, 14 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 36839268..ceca2738 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -55,20 +55,6 @@ var LibraryGL = { return true; } while (true); return false; - }, - - getProcAddress: function(original) { - // remove 'gl' and initial caps - var small = original.substr(2); - small = small[0].toLowerCase() + small.substr(1); - var func = Module.ctx[small]; - if (!func) { - console.log('WARNING: getProcAddress failed for ' + original + ' ==> ' + small); - func = function() { console.log('[empty replacement for ' + small + ']') }; - } - return Runtime.addFunction(function() { - return func.apply(Module.ctx, arguments); - }); } }, @@ -766,6 +752,29 @@ var LibraryGL = { return Module.ctx.isFramebuffer(fb); }, + // GL emulation: provides misc. functionality not present in OpenGL ES 2.0 or WebGL + + $GLEmulation__deps: ['glCreateShader'], + $GLEmulation: { + procReplacements: { + 'glCreateShaderObjectARB': 'glCreateShader' + }, + + 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; + }; + } + return Runtime.addFunction(func); + } + } }; // Simple pass-through functions |