diff options
author | Luo Jinghua <sunmoon1997@gmail.com> | 2011-06-14 10:53:30 +0800 |
---|---|---|
committer | Luo Jinghua <sunmoon1997@gmail.com> | 2011-06-14 10:53:30 +0800 |
commit | 009b4ac4668af540a1f883ccbe063a4478b8ee0b (patch) | |
tree | 6d8e4111a327254960ee7c9ffddc67d2714647eb | |
parent | ca67b65703e8a7c6436869132c1d042ad97b46fe (diff) |
opengles: disable other texture units
-rw-r--r-- | src/sdl-freetype-opengles.c | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/src/sdl-freetype-opengles.c b/src/sdl-freetype-opengles.c index 1b27849..dd6e98e 100644 --- a/src/sdl-freetype-opengles.c +++ b/src/sdl-freetype-opengles.c @@ -306,7 +306,8 @@ sdl_freetype_opengles_glyphs_render (sdl_freetype_font_t * font, GLboolean tex2d_enabled; GLboolean lighting_enabled; GLfloat color[4]; - GLenum blenddst, blendsrc; + GLint blenddst, blendsrc; + GLfloat tmat[16], mvmat[16]; if (!render->valid) { for (i = 0; i < num_glyphs && !render->valid; i++) @@ -371,27 +372,35 @@ sdl_freetype_opengles_glyphs_render (sdl_freetype_font_t * font, int left = num_cached; if (!dirty) { + GLint max_tex_units = 2; + int tex; + dirty = SDL_FREETYPE_TRUE; glMatrixMode (GL_TEXTURE); - glPushMatrix (); + glGetFloatv(GL_TEXTURE_MATRIX, tmat); glLoadIdentity (); glMatrixMode (GL_MODELVIEW); - glPushMatrix (); + glGetFloatv(GL_MODELVIEW_MATRIX, mvmat); glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glDisable (GL_LIGHTING); - glDisable (GL_DEPTH_TEST); - glDisable (GL_FOG); + glGetIntegerv(GL_MAX_TEXTURE_UNITS, &max_tex_units); + for (tex = 1; tex < max_tex_units; tex++) { + glActiveTexture (GL_TEXTURE0 + tex); + glBindTexture (GL_TEXTURE_2D, 0); + glDisable (GL_TEXTURE_2D); + } + glActiveTexture (GL_TEXTURE0); + glClientActiveTexture (GL_TEXTURE0); glEnable (GL_TEXTURE_2D); glBindTexture (GL_TEXTURE_2D, render->texture); glTranslatef (x * render->usx, y * render->usy, 0.0f); - glColor4ub (r, g, b, a); glEnableClientState (GL_VERTEX_ARRAY); @@ -481,7 +490,7 @@ sdl_freetype_opengles_glyphs_render (sdl_freetype_font_t * font, glEnableClientState (GL_NORMAL_ARRAY); glMatrixMode (GL_TEXTURE); - glPopMatrix (); + glLoadMatrixf (tmat); if (!blend_enabled) glDisable (GL_BLEND); @@ -495,7 +504,7 @@ sdl_freetype_opengles_glyphs_render (sdl_freetype_font_t * font, glBindTexture (GL_TEXTURE_2D, 0); glMatrixMode (GL_MODELVIEW); - glPopMatrix (); + glLoadMatrixf (mvmat); glColor4f (color[0], color[1], color[2], color[3]); } |