aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJukka Jylänki <jujjyl@gmail.com>2013-12-09 19:08:43 +0200
committerJukka Jylänki <jujjyl@gmail.com>2014-01-14 12:42:40 +0200
commit03a3c426265d1cf8c11073e35e75be911004b57d (patch)
treece5379b4fc3e919e78c97865d9b7cb34485fadb5
parent3ee72465de5bdebce7584f65586228ab5b32c01e (diff)
Implement glGetTexEnviv and glGetTexEnvfv in GL emulation mode.
-rw-r--r--src/library_gl.js112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/library_gl.js b/src/library_gl.js
index b96ba0f2..ba0216cb 100644
--- a/src/library_gl.js
+++ b/src/library_gl.js
@@ -3329,6 +3329,107 @@ var LibraryGL = {
Module.printErr('WARNING: Unhandled `pname` in call to `glTexEnvfv`.');
}
},
+
+ hook_getTexEnviv: function(target, pname, param) {
+ if (target != GL_TEXTURE_ENV)
+ return;
+
+ var env = getCurTexUnit().env;
+ switch (pname) {
+ case GL_TEXTURE_ENV_MODE:
+ {{{ makeSetValue('param', '0', 'env.mode', 'i32') }}};
+ return;
+
+ case GL_TEXTURE_ENV_COLOR:
+ {{{ makeSetValue('param', '0', 'Math.max(Math.min(env.envColor[0]*255, 255, -255))', 'i32') }}};
+ {{{ makeSetValue('param', '1', 'Math.max(Math.min(env.envColor[1]*255, 255, -255))', 'i32') }}};
+ {{{ makeSetValue('param', '2', 'Math.max(Math.min(env.envColor[2]*255, 255, -255))', 'i32') }}};
+ {{{ makeSetValue('param', '3', 'Math.max(Math.min(env.envColor[3]*255, 255, -255))', 'i32') }}};
+ return;
+
+ case GL_COMBINE_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorCombiner', 'i32') }}};
+ return;
+
+ case GL_COMBINE_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaCombiner', 'i32') }}};
+ return;
+
+ case GL_SRC0_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorSrc[0]', 'i32') }}};
+ return;
+
+ case GL_SRC1_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorSrc[1]', 'i32') }}};
+ return;
+
+ case GL_SRC2_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorSrc[2]', 'i32') }}};
+ return;
+
+ case GL_SRC0_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaSrc[0]', 'i32') }}};
+ return;
+
+ case GL_SRC1_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaSrc[1]', 'i32') }}};
+ return;
+
+ case GL_SRC2_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaSrc[2]', 'i32') }}};
+ return;
+
+ case GL_OPERAND0_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorOp[0]', 'i32') }}};
+ return;
+
+ case GL_OPERAND1_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorOp[1]', 'i32') }}};
+ return;
+
+ case GL_OPERAND2_RGB:
+ {{{ makeSetValue('param', '0', 'env.colorOp[2]', 'i32') }}};
+ return;
+
+ case GL_OPERAND0_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaOp[0]', 'i32') }}};
+ return;
+
+ case GL_OPERAND1_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaOp[1]', 'i32') }}};
+ return;
+
+ case GL_OPERAND2_ALPHA:
+ {{{ makeSetValue('param', '0', 'env.alphaOp[2]', 'i32') }}};
+ return;
+
+ case GL_RGB_SCALE:
+ {{{ makeSetValue('param', '0', 'env.colorScale', 'i32') }}};
+ return;
+
+ case GL_ALPHA_SCALE:
+ {{{ makeSetValue('param', '0', 'env.alphaScale', 'i32') }}};
+ return;
+
+ default:
+ Module.printErr('WARNING: Unhandled `pname` in call to `glGetTexEnvi`.');
+ }
+ },
+
+ hook_getTexEnvfv: function(target, pname, param) {
+ if (target != GL_TEXTURE_ENV)
+ return;
+
+ var env = getCurTexUnit().env;
+ switch (pname) {
+ case GL_TEXTURE_ENV_COLOR:
+ {{{ makeSetValue('param', '0', 'env.envColor[0]', 'float') }}};
+ {{{ makeSetValue('param', '1', 'env.envColor[1]', 'float') }}};
+ {{{ makeSetValue('param', '2', 'env.envColor[2]', 'float') }}};
+ {{{ makeSetValue('param', '3', 'env.envColor[3]', 'float') }}};
+ return;
+ }
+ }
};
},
@@ -4003,6 +4104,14 @@ var LibraryGL = {
//glTexEnvfv(target, pname, param);
};
+ _glGetTexEnviv = function _glGetTexEnviv(target, pname, param) {
+ GL.immediate.TexEnvJIT.hook_getTexEnviv(target, pname, param);
+ };
+
+ _glGetTexEnvfv = function _glGetTexEnvfv(target, pname, param) {
+ GL.immediate.TexEnvJIT.hook_getTexEnvfv(target, pname, param);
+ };
+
var glGetIntegerv = _glGetIntegerv;
_glGetIntegerv = function _glGetIntegerv(pname, params) {
switch (pname) {
@@ -4787,6 +4896,9 @@ var LibraryGL = {
glTexEnvf: function() { Runtime.warnOnce('glTexEnvf: TODO') },
glTexEnvfv: function() { Runtime.warnOnce('glTexEnvfv: TODO') },
+ glGetTexEnviv: function(target, pname, param) { throw 'GL emulation not initialized!'; },
+ glGetTexEnvfv: function(target, pname, param) { throw 'GL emulation not initialized!'; },
+
glTexImage1D: function() { throw 'glTexImage1D: TODO' },
glTexCoord3f: function() { throw 'glTexCoord3f: TODO' },
glGetTexLevelParameteriv: function() { throw 'glGetTexLevelParameteriv: TODO' },