aboutsummaryrefslogtreecommitdiff
path: root/src/library_gl.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/library_gl.js')
-rw-r--r--src/library_gl.js27
1 files changed, 23 insertions, 4 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index cdea449c..3ec7c81e 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -748,19 +748,38 @@ var LibraryGL = {
// GL emulation: provides misc. functionality not present in OpenGL ES 2.0 or WebGL
- $GLEmulation__deps: ['glCreateShader', 'glShaderSource', 'glCompileShader', 'glCreateProgram', 'glDeleteShader', 'glDeleteProgram'],
+ $GLEmulation__deps: ['glCreateShader', 'glShaderSource', 'glCompileShader', 'glCreateProgram', 'glDeleteShader', 'glDeleteProgram', 'glAttachShader', 'glActiveTexture', 'glGetShaderiv', 'glGetProgramiv', 'glLinkProgram'],
$GLEmulation: {
procReplacements: {
'glCreateShaderObjectARB': 'glCreateShader',
'glShaderSourceARB': 'glShaderSource',
'glCompileShaderARB': 'glCompileShader',
'glCreateProgramObjectARB': 'glCreateProgram',
+ 'glAttachObjectARB': 'glAttachShader',
+ 'glLinkProgramARB': 'glLinkProgram',
+ 'glActiveTextureARB': 'glActiveTexture'
},
procs: {
- glDeleteObjectARB: function() {
- console.log('WARNING: not deleting through glDeleteObject, not sure if shader or program');
- }
+ glDeleteObjectARB: function(id) {
+ if (GL.programs[id]) {
+ _glDeleteProgram(id);
+ } else if (GL.shaders[id]) {
+ _glDeleteShader(id);
+ } else {
+ console.log('WARNING: deleteObjectARB received invalid id: ' + id);
+ }
+ },
+
+ glGetObjectParameterivARB: function(id, type, result) {
+ if (GL.programs[id]) {
+ _glGetProgramiv(id, type, result);
+ } else if (GL.shaders[id]) {
+ _glGetShaderiv(id, type, result);
+ } else {
+ console.log('WARNING: getObjectParameterivARB received invalid id: ' + id);
+ }
+ },
},
getProcAddress: function(name_) {