aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2012-04-13 21:03:21 -0700
committerAlon Zakai <alonzakai@gmail.com>2012-04-13 21:09:56 -0700
commitc19881add053dc07547a6f280160581e5886d0f9 (patch)
tree50e4bfd927c1a7be884dde486e0aad169433e768 /src
parentb5e53f4e1759ad04d2d1fcd841c1164ceab4364c (diff)
more gl emulation stuff
Diffstat (limited to 'src')
-rw-r--r--src/library_gl.js30
1 files changed, 24 insertions, 6 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index 8e074069..6ecc5851 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -860,15 +860,31 @@ var LibraryGL = {
return Module.ctx.isFramebuffer(fb);
},
- glEnable: function(cap) {
- if (cap == 0x0DE1) return; // no GL_TEXTURE_2D in GLES or WebGL
- Module.ctx.enable(cap);
- },
-
// 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__postset: 'GLEmulation.init();',
$GLEmulation: {
+ init: function() {
+ // Add some emulation workarounds
+ _glEnable = function(cap) {
+ if (cap == 0x0DE1) return; // GL_TEXTURE_2D
+ if (cap == 0x0B20) return; // GL_LINE_SMOOTH
+ Module.ctx.enable(cap);
+ };
+ _glDisable = function(cap) {
+ if (cap == 0x0B60) return; // GL_FOG
+ Module.ctx.disable(cap);
+ };
+ var glGetIntegerv = _glGetIntegerv;
+ _glGetIntegerv = function(pname, params) {
+ if (pname == 0x84E2) { // GL_MAX_TEXTURE_UNITS
+ pname = 0x8872; // fake it with GL_MAX_TEXTURE_IMAGE_UNITS
+ }
+ glGetIntegerv(pname, params);
+ };
+ },
+
procReplacements: {
'glCreateShaderObjectARB': 'glCreateShader',
'glShaderSourceARB': 'glShaderSource',
@@ -1075,6 +1091,8 @@ var LibraryGL = {
GL.immediate.vertexData[5*GL.immediate.vertexCounter+4] = v;
},
+ glColor3f: function(){}, // TODO
+
// OpenGL Immediate Mode matrix routines.
// Note that in the future we might make these available only in certain modes.
glMatrixMode__deps: ['$GL', '$GLImmediateSetup'],
@@ -1249,7 +1267,7 @@ 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 checkFramebufferStatus* generateMipmap activeTexture blendEquation polygonOffset hint sampleCoverage isEnabled*'],
+ [1, 'clearDepth clearDepth[f] depthFunc enable disable frontFace cullFace clear enableVertexAttribArray disableVertexAttribArray lineWidth clearStencil depthMask stencilMask checkFramebufferStatus* generateMipmap activeTexture blendEquation polygonOffset hint sampleCoverage isEnabled*'],
[2, 'blendFunc blendEquationSeparate depthRange depthRange[f] stencilMaskSeparate'],
[3, 'texParameteri texParameterf drawArrays vertexAttrib2f stencilFunc stencilOp'],
[4, 'viewport clearColor scissor vertexAttrib3f colorMask drawElements renderbufferStorage blendFuncSeparate blendColor stencilFuncSeparate stencilOpSeparate'],