Browse Source

* Factored some of the GL code.

tags/v0.99.beta14
Sam Hocevar sam 18 years ago
parent
commit
cfe6fd6ffa
1 changed files with 24 additions and 41 deletions
  1. +24
    -41
      caca/driver_gl.c

+ 24
- 41
caca/driver_gl.c View File

@@ -326,43 +326,30 @@ static void gl_display(caca_display_t *dp)
}

/* 2nd pass, avoids changing render state too much */
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);

line = 0;
for(y = 0; y < dp->drv.p->height; y += dp->drv.p->font_height)
for(y = 0; y < dp->drv.p->height; y += dp->drv.p->font_height, line++)
{
uint32_t *attr = dp->cv->attr + line * dp->cv->width;
uint32_t *chars = dp->cv->chars + line * dp->cv->width;

for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width)
for(x = 0; x < dp->drv.p->width; x += dp->drv.p->font_width, attr++)
{
uint32_t cv = *chars++;
uint16_t fg;

if(cv == ' ')
continue;

if(cv > 0x00000020 && cv < 0x00000080)
{
uint16_t fg = _cucul_argb32_to_rgb12fg(*attr);
glBindTexture(GL_TEXTURE_2D, dp->drv.p->id[cv - 32]);
glColor3b(((fg & 0xf00) >> 8) * 8,
((fg & 0x0f0) >> 4) * 8,
(fg & 0x00f) * 8);
glBegin(GL_QUADS);
glTexCoord2f(0, dp->drv.p->sh);
glVertex2f(x, y);
glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
glVertex2f(x + dp->drv.p->font_width, y);
glTexCoord2f(dp->drv.p->sw, 0);
glVertex2f(x + dp->drv.p->font_width,
y + dp->drv.p->font_height);
glTexCoord2f(0, 0);
glVertex2f(x, y + dp->drv.p->font_height);
glEnd();
}
else if(cv!=' ')
else switch(cv)
{
switch(cv)
{
case 0x00002580: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[0]); break;
case 0x00002584: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[1]); break;
case 0x00002588: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[2]); break;
@@ -372,30 +359,26 @@ static void gl_display(caca_display_t *dp)
case 0x00002592: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[6]); break;
case 0x00002593: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id_uni[7]); break;
default: glBindTexture(GL_TEXTURE_2D, dp->drv.p->id['?' - 32]); break;
}

uint16_t fg = _cucul_argb32_to_rgb12fg(*attr);
glColor3b(((fg & 0xf00) >> 8) * 8,
((fg & 0x0f0) >> 4) * 8,
(fg & 0x00f) * 8);
glBegin(GL_QUADS);
glTexCoord2f(0, dp->drv.p->sh);
glVertex2f(x, y);
glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
glVertex2f(x + dp->drv.p->font_width, y);
glTexCoord2f(dp->drv.p->sw, 0);
glVertex2f(x + dp->drv.p->font_width,
y + dp->drv.p->font_height);
glTexCoord2f(0, 0);
glVertex2f(x, y + dp->drv.p->font_height);
glEnd();

}

attr++;
fg = _cucul_argb32_to_rgb12fg(*attr);
glColor3b(((fg & 0xf00) >> 8) * 8,
((fg & 0x0f0) >> 4) * 8,
(fg & 0x00f) * 8);
glBegin(GL_QUADS);
glTexCoord2f(0, dp->drv.p->sh);
glVertex2f(x, y);
glTexCoord2f(dp->drv.p->sw, dp->drv.p->sh);
glVertex2f(x + dp->drv.p->font_width, y);
glTexCoord2f(dp->drv.p->sw, 0);
glVertex2f(x + dp->drv.p->font_width,
y + dp->drv.p->font_height);
glTexCoord2f(0, 0);
glVertex2f(x, y + dp->drv.p->font_height);
glEnd();
}
line++;
}
glBlendFunc(GL_ONE, GL_ZERO);
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);



Loading…
Cancel
Save