diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-16 10:54:40 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-16 10:54:40 -0700 |
commit | 6c2eefc0357a48d031e5a65309fdbdf3e2eaa35f (patch) | |
tree | 85a75878ae300526cc8c2cef1654a4d5b3ae8e10 | |
parent | 918f02859f22d897e98f60f4ca841a05d3cb4756 (diff) |
additional gl emulation support
-rw-r--r-- | src/library_gl.js | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 5446eb4c..2663fdfd 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -862,7 +862,7 @@ var LibraryGL = { // GL emulation: provides misc. functionality not present in OpenGL ES 2.0 or WebGL - $GLEmulation__deps: ['glCreateShader', 'glShaderSource', 'glCompileShader', 'glCreateProgram', 'glDeleteShader', 'glDeleteProgram', 'glAttachShader', 'glActiveTexture', 'glGetShaderiv', 'glGetProgramiv', 'glLinkProgram'], + $GLEmulation__deps: ['glCreateShader', 'glShaderSource', 'glCompileShader', 'glCreateProgram', 'glDeleteShader', 'glDeleteProgram', 'glAttachShader', 'glActiveTexture', 'glGetShaderiv', 'glGetProgramiv', 'glLinkProgram', 'glGetProgramInfoLog', 'glGetShaderInfoLog'], $GLEmulation__postset: 'GLEmulation.init();', $GLEmulation: { init: function() { @@ -871,9 +871,12 @@ var LibraryGL = { _glEnable = function(cap) { if (cap == 0x0DE1) return; // GL_TEXTURE_2D if (cap == 0x0B20) return; // GL_LINE_SMOOTH + if (cap == 0x0B60) return; // GL_FOG Module.ctx.enable(cap); }; _glDisable = function(cap) { + if (cap == 0x0DE1) return; // GL_TEXTURE_2D + if (cap == 0x0B20) return; // GL_LINE_SMOOTH if (cap == 0x0B60) return; // GL_FOG Module.ctx.disable(cap); }; @@ -909,13 +912,31 @@ var LibraryGL = { glGetObjectParameterivARB: 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 { console.log('WARNING: getObjectParameterivARB received invalid id: ' + id); } }, + + glGetInfoLogARB: 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 { + console.log('WARNING: getObjectParameterivARB received invalid id: ' + id); + } + } }, getProcAddress: function(name_) { |