summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuo Jinghua <sunmoon1997@gmail.com>2011-06-14 10:53:30 +0800
committerLuo Jinghua <sunmoon1997@gmail.com>2011-06-14 10:53:30 +0800
commit009b4ac4668af540a1f883ccbe063a4478b8ee0b (patch)
tree6d8e4111a327254960ee7c9ffddc67d2714647eb
parentca67b65703e8a7c6436869132c1d042ad97b46fe (diff)
opengles: disable other texture units
-rw-r--r--src/sdl-freetype-opengles.c25
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]);
}