aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-08 18:21:23 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-08 18:21:23 -0700
commit14f111041c952b0a1bb82c453d8f5a853869c7cb (patch)
tree15cfc2aaec4bea1b1aab349ddda69242adb61704
parentce2b8ba4773cb086a9f3d631b1479b2a994615fa (diff)
getProcAddress starting to work
-rw-r--r--src/library_gl.js37
-rw-r--r--src/library_sdl.js3
2 files changed, 25 insertions, 15 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
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 672619ad..24b90dce 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -977,8 +977,9 @@ mergeInto(LibraryManager.library, {
console.log('TODO: SDL_GL_SetAttribute');
},
+ SDL_GL_GetProcAddress__deps: ['$GLEmulation'],
SDL_GL_GetProcAddress: function(name_) {
- return GL.getProcAddress(Pointer_stringify(name_));
+ return GLEmulation.getProcAddress(Pointer_stringify(name_));
},
SDL_GL_SwapBuffers: function() {},