| @@ -1082,23 +1082,19 @@ void caca_display(caca_t *kk) | |||||
| #if defined(USE_GL) | #if defined(USE_GL) | ||||
| if(kk->driver == CACA_DRIVER_GL) | if(kk->driver == CACA_DRIVER_GL) | ||||
| { | { | ||||
| unsigned int x, y, offsetx, offsety; | |||||
| unsigned int x, y, line; | |||||
| glClear(GL_COLOR_BUFFER_BIT); | glClear(GL_COLOR_BUFFER_BIT); | ||||
| offsety = 0; | |||||
| line = 0; | |||||
| for(y = 0; y < kk->gl.height; y += kk->gl.font_height) | for(y = 0; y < kk->gl.height; y += kk->gl.font_height) | ||||
| { | { | ||||
| offsetx = 0; | |||||
| uint8_t *attr = kk->qq->attr + line * kk->qq->width; | |||||
| for(x = 0; x < kk->gl.width; x += kk->gl.font_width) | for(x = 0; x < kk->gl.width; x += kk->gl.font_width) | ||||
| { | { | ||||
| uint8_t *attr = kk->qq->attr + offsetx + offsety * kk->qq->width; | |||||
| int offset; | |||||
| offset = attr[0] >> 4; | |||||
| glDisable(GL_TEXTURE_2D); | glDisable(GL_TEXTURE_2D); | ||||
| glColor4bv(gl_bgpal[offset]); | |||||
| glColor4bv(gl_bgpal[attr[0] >> 4]); | |||||
| glBegin(GL_QUADS); | glBegin(GL_QUADS); | ||||
| glVertex2f(x, y); | glVertex2f(x, y); | ||||
| glVertex2f(x + kk->gl.font_width, y); | glVertex2f(x + kk->gl.font_width, y); | ||||
| @@ -1106,10 +1102,10 @@ void caca_display(caca_t *kk) | |||||
| glVertex2f(x, y + kk->gl.font_height); | glVertex2f(x, y + kk->gl.font_height); | ||||
| glEnd(); | glEnd(); | ||||
| offsetx++; | |||||
| attr++; | |||||
| } | } | ||||
| offsety++; | |||||
| line++; | |||||
| } | } | ||||
| /* 2nd pass, avoids changing render state too much */ | /* 2nd pass, avoids changing render state too much */ | ||||
| @@ -1117,18 +1113,17 @@ void caca_display(caca_t *kk) | |||||
| glEnable(GL_TEXTURE_2D); | glEnable(GL_TEXTURE_2D); | ||||
| glBlendFunc(GL_ONE, GL_ONE); | glBlendFunc(GL_ONE, GL_ONE); | ||||
| offsety = 0; | |||||
| line = 0; | |||||
| for(y = 0; y < kk->gl.height; y += kk->gl.font_height) | for(y = 0; y < kk->gl.height; y += kk->gl.font_height) | ||||
| { | { | ||||
| offsetx = 0; | |||||
| uint8_t *attr = kk->qq->attr + line * kk->qq->width; | |||||
| unsigned char *chars = kk->qq->chars + line * kk->qq->width; | |||||
| for(x = 0; x < kk->gl.width; x += kk->gl.font_width) | for(x = 0; x < kk->gl.width; x += kk->gl.font_width) | ||||
| { | { | ||||
| uint8_t *attr = kk->qq->attr + offsetx + offsety * kk->qq->width; | |||||
| unsigned char *chr = kk->qq->chars + offsetx + offsety * kk->qq->width; | |||||
| if(chr[0] != ' ') | |||||
| if(chars[0] != ' ') | |||||
| { | { | ||||
| glBindTexture(GL_TEXTURE_2D, kk->gl.id[chr[0]-32]); | |||||
| glBindTexture(GL_TEXTURE_2D, kk->gl.id[chars[0]-32]); | |||||
| glColor4bv(gl_bgpal[attr[0] & 0xf]); | glColor4bv(gl_bgpal[attr[0] & 0xf]); | ||||
| glBegin(GL_QUADS); | glBegin(GL_QUADS); | ||||
| glTexCoord2f(0, kk->gl.sh); | glTexCoord2f(0, kk->gl.sh); | ||||
| @@ -1141,9 +1136,11 @@ void caca_display(caca_t *kk) | |||||
| glVertex2f(x, y + kk->gl.font_height); | glVertex2f(x, y + kk->gl.font_height); | ||||
| glEnd(); | glEnd(); | ||||
| } | } | ||||
| offsetx++; | |||||
| attr++; | |||||
| chars++; | |||||
| } | } | ||||
| offsety++; | |||||
| line++; | |||||
| } | } | ||||
| glDisable(GL_BLEND); | glDisable(GL_BLEND); | ||||
| glDisable(GL_TEXTURE_2D); | glDisable(GL_TEXTURE_2D); | ||||