aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-08 19:41:25 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-08 19:41:25 -0700
commit6931fceaefe3bb116197ff59c0ce51d2a88f63a7 (patch)
treec1794c18abb700cb517e83fe298568e08dd3be0b
parent14f111041c952b0a1bb82c453d8f5a853869c7cb (diff)
more gl emulation
-rw-r--r--src/library_gl.js33
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);
}