diff options
author | Jukka Jylänki <jujjyl@gmail.com> | 2013-12-12 19:03:49 +0200 |
---|---|---|
committer | Jukka Jylänki <jujjyl@gmail.com> | 2014-01-14 12:42:42 +0200 |
commit | 8c93579ff8761d06d691aec0d73124956a2d6452 (patch) | |
tree | 813fa875811d9f45011629dbd5ab72ffd573fb4f | |
parent | 3d05d222cbbb0ab6b8be12c5ea86fdf49d0d691a (diff) |
Add test for glGetTexEnv implementation. Fix output of GL_TEXTURE_ENV_COLOR color data from glGetTexEnvfv.
-rw-r--r-- | src/library_gl.js | 6 | ||||
-rw-r--r-- | tests/glgettexenv.c | 71 | ||||
-rw-r--r-- | tests/test_browser.py | 3 |
3 files changed, 77 insertions, 3 deletions
diff --git a/src/library_gl.js b/src/library_gl.js index 9dceb058..ffc395b4 100644 --- a/src/library_gl.js +++ b/src/library_gl.js @@ -3424,9 +3424,9 @@ var LibraryGL = { 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') }}}; + {{{ makeSetValue('param', '4', 'env.envColor[1]', 'float') }}}; + {{{ makeSetValue('param', '8', 'env.envColor[2]', 'float') }}}; + {{{ makeSetValue('param', '12', 'env.envColor[3]', 'float') }}}; return; } } diff --git a/tests/glgettexenv.c b/tests/glgettexenv.c new file mode 100644 index 00000000..a051a690 --- /dev/null +++ b/tests/glgettexenv.c @@ -0,0 +1,71 @@ +/* +THIS WORK, INCLUDING THE SOURCE CODE, DOCUMENTATION +AND RELATED MEDIA AND DATA, IS PLACED INTO THE PUBLIC DOMAIN. + +THE ORIGINAL AUTHOR IS KYLE FOLEY. + +THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY +OF ANY KIND, NOT EVEN THE IMPLIED WARRANTY OF +MERCHANTABILITY. THE AUTHOR OF THIS SOFTWARE, +ASSUMES _NO_ RESPONSIBILITY FOR ANY CONSEQUENCE +RESULTING FROM THE USE, MODIFICATION, OR +REDISTRIBUTION OF THIS SOFTWARE. +*/ + +#if !EMSCRIPTEN +#define USE_GLEW 1 +#endif + +#if USE_GLEW +#include "GL/glew.h" +#endif + +#include "SDL/SDL.h" +#if !USE_GLEW +#include "SDL/SDL_opengl.h" +#endif + +#include <stdio.h> +#include <string.h> +#include <assert.h> + +int main(int argc, char *argv[]) +{ + SDL_Surface *screen; + if ( SDL_Init(SDL_INIT_VIDEO) != 0 ) { + printf("Unable to initialize SDL: %s\n", SDL_GetError()); + return 1; + } + + SDL_GL_SetAttribute( SDL_GL_DOUBLEBUFFER, 1 ); + screen = SDL_SetVideoMode( 640, 480, 24, SDL_OPENGL ); + if ( !screen ) { + printf("Unable to set video mode: %s\n", SDL_GetError()); + return 1; + } + + GLint value = 0; + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); + glGetTexEnviv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, &value); + assert(value == GL_BLEND); + glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glGetTexEnviv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, &value); + assert(value == GL_MODULATE); + + GLfloat colora[4] = { 0.2f, 0.3f, 0.4f, 0.5f }; + GLfloat colorb[4] = {}; + glTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, colora); + glGetTexEnvfv(GL_TEXTURE_ENV, GL_TEXTURE_ENV_COLOR, colorb); + printf("%f %f %f %f\n", colorb[0], colorb[1], colorb[2], colorb[3]); + assert(colora[0] == colorb[0]); + assert(colora[1] == colorb[1]); + assert(colora[2] == colorb[2]); + assert(colora[3] == colorb[3]); + SDL_Quit(); + +#ifdef REPORT_RESULT + int result = 1; + REPORT_RESULT(); +#endif + return 0; +} diff --git a/tests/test_browser.py b/tests/test_browser.py index c2eaabb6..27dffff2 100644 --- a/tests/test_browser.py +++ b/tests/test_browser.py @@ -1543,6 +1543,9 @@ keydown(100);keyup(100); // trigger the end def test_cube_explosion(self): self.btest('cube_explosion.c', reference='cube_explosion.png', args=['-s', 'LEGACY_GL_EMULATION=1']) + def test_glgettexenv(self): + self.btest('glgettexenv.c', args=['-s', 'LEGACY_GL_EMULATION=1'], expected=['1']) + def test_sdl_canvas_blank(self): self.btest('sdl_canvas_blank.c', reference='sdl_canvas_blank.png') |