diff options
author | Alon Zakai <alonzakai@gmail.com> | 2012-04-13 14:25:08 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2012-04-13 14:25:08 -0700 |
commit | 84c474ca1ee9c1c9972a36331e598bd8194287b0 (patch) | |
tree | d5cae09ceea760c70d5f9a16191fbc1809026272 /src | |
parent | 0cad53c1003f167ae83ed8c2d2adb6236e490843 (diff) |
misc gl additions and corrections
Diffstat (limited to 'src')
-rw-r--r-- | src/library_gl.js | 46 |
1 files changed, 36 insertions, 10 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index f5652ff9..b14b345f 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -320,7 +320,7 @@ var LibraryGL = { glIsTexture: function(texture) { var fb = GL.textures[texture]; if (typeof(fb) == 'undefined') { - return false; + return 0; } return Module.ctx.isTexture(fb); }, @@ -341,6 +341,10 @@ var LibraryGL = { } }, + glGetBufferParameteriv: function(target, value, data) { + {{{ makeSetValue('data', '0', 'Module.ctx.getBufferParameter(target, value)', 'i32') }}}; + }, + glBufferData: function(target, size, data, usage) { Module.ctx.bufferData(target, HEAPU8.subarray(data, data+size), usage); }, @@ -353,7 +357,7 @@ var LibraryGL = { glIsBuffer: function(buffer) { var fb = GL.buffers[buffer]; if (typeof(fb) == 'undefined') { - return false; + return 0; } return Module.ctx.isBuffer(fb); }, @@ -385,11 +389,33 @@ var LibraryGL = { glIsRenderbuffer: function(renderbuffer) { var fb = GL.renderbuffers[renderbuffer]; if (typeof(fb) == 'undefined') { - return false; + return 0; } return Module.ctx.isRenderbuffer(fb); }, + glGetUniformfv: function(program, location, params) { + var data = Module.ctx.getUniform(GL.programs[program], GL.uniforms[location]); + if (typeof data == 'number') { + {{{ makeSetValue('params', '0', 'data', 'float') }}}; + } else { + for (var i = 0; i < data.length; i++) { + {{{ makeSetValue('params', 'i', 'data[i]', 'float') }}}; + } + } + }, + + glGetUniformiv: function(program, location, params) { + var data = Module.ctx.getUniform(GL.programs[program], GL.uniforms[location]); + if (typeof data == 'number') { + {{{ makeSetValue('params', '0', 'data', 'i32') }}}; + } else { + for (var i = 0; i < data.length; i++) { + {{{ makeSetValue('params', 'i', 'data[i]', 'i32') }}}; + } + } + }, + glGetUniformLocation: function(program, name) { name = Pointer_stringify(name); var loc = Module.ctx.getUniformLocation(GL.programs[program], name); @@ -679,7 +705,7 @@ var LibraryGL = { glIsShader: function(shader) { var fb = GL.shaders[shader]; if (typeof(fb) == 'undefined') { - return false; + return 0; } return Module.ctx.isShader(fb); }, @@ -735,7 +761,7 @@ var LibraryGL = { glIsProgram: function(program) { var fb = GL.programs[program]; if (typeof(fb) == 'undefined') { - return false; + return 0; } return Module.ctx.isProgram(fb); }, @@ -783,7 +809,7 @@ var LibraryGL = { glIsFramebuffer: function(framebuffer) { var fb = GL.framebuffers[framebuffer]; if (typeof(fb) == 'undefined') { - return false; + return 0; } return Module.ctx.isFramebuffer(fb); }, @@ -980,11 +1006,11 @@ var LibraryGL = { }; // Simple pass-through functions. Starred ones have return values. [X] ones have X in the C name but not in the JS name -[[0, 'shadeModel fogi fogfv getError finish flush'], - [1, 'clearDepth clearDepth[f] depthFunc disable frontFace cullFace clear enableVertexAttribArray disableVertexAttribArray lineWidth clearStencil depthMask stencilMask stencilMaskSeparate checkFramebufferStatus* generateMipmap activeTexture blendEquation polygonOffset hint sampleCoverage'], - [2, 'pixelStorei blendFunc blendEquationSeparate depthRange depthRange[f]'], +[[0, 'shadeModel fogi fogfv getError* finish flush'], + [1, 'clearDepth clearDepth[f] depthFunc disable frontFace cullFace clear enableVertexAttribArray disableVertexAttribArray lineWidth clearStencil depthMask stencilMask checkFramebufferStatus* generateMipmap activeTexture blendEquation polygonOffset hint sampleCoverage isEnabled*'], + [2, 'pixelStorei blendFunc blendEquationSeparate depthRange depthRange[f] stencilMaskSeparate'], [3, 'texParameteri texParameterf drawArrays vertexAttrib2f stencilFunc stencilOp'], - [4, 'viewport clearColor scissor vertexAttrib3f colorMask drawElements renderbufferStorage blendFuncSeparate blendColor'], + [4, 'viewport clearColor scissor vertexAttrib3f colorMask drawElements renderbufferStorage blendFuncSeparate blendColor stencilFuncSeparate stencilOpSeparate'], [5, 'vertexAttrib4f'], [6, 'vertexAttribPointer'], [8, 'copyTexImage2D copyTexSubImage2D']].forEach(function(data) { |