extern unsigned char d_15to8table[65536];
cvar_t qsg_version = {"qsg_version", "1"};
-cvar_t gl_conalpha = {"gl_conalpha", "1"};
+cvar_t scr_conalpha = {"scr_conalpha", "1"};
byte *draw_chars; // 8*8 graphic characters
qpic_t *draw_disc;
-//int translate_texture;
int char_texture;
typedef struct
float sl, tl, sh, th;
} glpic_t;
-byte conback_buffer[sizeof(qpic_t) + sizeof(glpic_t)];
-qpic_t *conback = (qpic_t *)&conback_buffer;
+int conbacktexnum;
/*
=============================================================================
pic->pic.height = dat->height;
gl = (glpic_t *)pic->pic.data;
- gl->texnum = GL_LoadPicTexture (dat);
+ gl->texnum = loadtextureimage(path, 0, 0, false, false);
+ if (!gl->texnum)
+ gl->texnum = GL_LoadPicTexture (dat);
gl->sl = 0;
gl->sh = 1;
gl->tl = 0;
return &pic->pic;
}
-/*
-void Draw_CharToConback (int num, byte *dest)
-{
- int row, col;
- byte *source;
- int drawline;
- int x;
-
- row = num>>4;
- col = num&15;
- source = draw_chars + (row<<10) + (col<<3);
-
- drawline = 8;
-
- while (drawline--)
- {
- for (x=0 ; x<8 ; x++)
- if (source[x] != 255)
- dest[x] = 0x60 + source[x];
- source += 128;
- dest += 320;
- }
-
-}
-*/
-
extern void LoadSky_f(void);
extern char *QSG_EXTENSIONS;
void gl_draw_start()
{
int i;
- glpic_t *gl;
- // load the console background and the charset
- // by hand, because we need to write the version
- // string into the background before turning
- // it into a texture
char_texture = loadtextureimage ("conchars", 0, 0, false, false);
if (!char_texture)
{
draw_chars = W_GetLumpName ("conchars");
- for (i=0 ; i<256*64 ; i++)
+ for (i=0 ; i<128*128 ; i++)
if (draw_chars[i] == 0)
draw_chars[i] = 255; // proper transparent color
char_texture = GL_LoadTexture ("charset", 128, 128, draw_chars, false, true, 1);
}
- gl = (glpic_t *)conback->data;
- gl->texnum = loadtextureimage("gfx/conback", 0, 0, false, false);
- gl->sl = 0;
- gl->sh = 1;
- gl->tl = 0;
- gl->th = 1;
- conback->width = vid.width;
- conback->height = vid.height;
+ conbacktexnum = loadtextureimage("gfx/conback", 0, 0, false, false);
memset(scraptexnum, 0, sizeof(scraptexnum));
{
int i;
Cvar_RegisterVariable (&qsg_version);
- Cvar_RegisterVariable (&gl_conalpha);
+ Cvar_RegisterVariable (&scr_conalpha);
Cmd_AddCommand ("loadsky", &LoadSky_f);
fcol = col*0.0625;
size = 0.0625;
+ if (!r_render.value)
+ return;
glBindTexture(GL_TEXTURE_2D, char_texture);
// LordHavoc: NEAREST mode on text if not scaling up
if ((int) vid.width < glwidth)
{
int num;
float frow, fcol;
+ if (!r_render.value)
+ return;
if (y <= -8 || y >= (int) vid.height || x >= (int) vid.width || *str == 0) // completely offscreen or no text to print
return;
if (maxlen < 1)
{
frow = (float) ((int) num >> 4)*0.0625;
fcol = (float) ((int) num & 15)*0.0625;
- glTexCoord2f (fcol, frow);
- glVertex2f (x, y);
- glTexCoord2f (fcol + 0.0625, frow);
- glVertex2f (x+8, y);
- glTexCoord2f (fcol + 0.0625, frow + 0.0625);
- glVertex2f (x+8, y+8);
- glTexCoord2f (fcol, frow + 0.0625);
- glVertex2f (x, y+8);
+ glTexCoord2f (fcol , frow );glVertex2f (x, y);
+ glTexCoord2f (fcol + 0.0625, frow );glVertex2f (x+8, y);
+ glTexCoord2f (fcol + 0.0625, frow + 0.0625);glVertex2f (x+8, y+8);
+ glTexCoord2f (fcol , frow + 0.0625);glVertex2f (x, y+8);
}
x += 8;
}
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
-void Draw_GenericPic (int texnum, float red, float green, float blue, float alpha, float x, float y, float width, float height)
+void Draw_GenericPic (int texnum, float red, float green, float blue, float alpha, int x, int y, int width, int height)
{
- glDisable(GL_ALPHA_TEST);
-// glEnable (GL_BLEND);
- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-// glCullFace(GL_FRONT);
+ if (!r_render.value)
+ return;
glColor4f(red,green,blue,alpha);
glBindTexture(GL_TEXTURE_2D, texnum);
- glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBegin (GL_QUADS);
- glTexCoord2f (0, 0);
- glVertex2f (x, y);
- glTexCoord2f (1, 0);
- glVertex2f (x+width, y);
- glTexCoord2f (1, 1);
- glVertex2f (x+width, y+height);
- glTexCoord2f (0, 1);
- glVertex2f (x, y+height);
+ glTexCoord2f (0, 0);glVertex2f (x, y);
+ glTexCoord2f (1, 0);glVertex2f (x+width, y);
+ glTexCoord2f (1, 1);glVertex2f (x+width, y+height);
+ glTexCoord2f (0, 1);glVertex2f (x, y+height);
glEnd ();
- glColor3f(1,1,1);
-// glEnable(GL_ALPHA_TEST);
-// glDisable (GL_BLEND);
}
/*
if (scrap_dirty)
Scrap_Upload ();
gl = (glpic_t *)pic->data;
-// glDisable(GL_ALPHA_TEST);
-// glEnable (GL_BLEND);
-// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-// glCullFace(GL_FRONT);
- glColor4f(0.8,0.8,0.8,alpha);
+ if (!r_render.value)
+ return;
+ glColor4f(1,1,1,alpha);
glBindTexture(GL_TEXTURE_2D, gl->texnum);
-// glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
glBegin (GL_QUADS);
- glTexCoord2f (gl->sl, gl->tl);
- glVertex2f (x, y);
- glTexCoord2f (gl->sh, gl->tl);
- glVertex2f (x+pic->width, y);
- glTexCoord2f (gl->sh, gl->th);
- glVertex2f (x+pic->width, y+pic->height);
- glTexCoord2f (gl->sl, gl->th);
- glVertex2f (x, y+pic->height);
+ glTexCoord2f (gl->sl, gl->tl);glVertex2f (x, y);
+ glTexCoord2f (gl->sh, gl->tl);glVertex2f (x+pic->width, y);
+ glTexCoord2f (gl->sh, gl->th);glVertex2f (x+pic->width, y+pic->height);
+ glTexCoord2f (gl->sl, gl->th);glVertex2f (x, y+pic->height);
glEnd ();
- glColor3f(1,1,1);
-// glEnable(GL_ALPHA_TEST);
-// glDisable (GL_BLEND);
}
if (scrap_dirty)
Scrap_Upload ();
gl = (glpic_t *)pic->data;
- glColor3f(0.8,0.8,0.8);
+ if (!r_render.value)
+ return;
+ glColor3f(1,1,1);
glBindTexture(GL_TEXTURE_2D, gl->texnum);
glBegin (GL_QUADS);
- glTexCoord2f (gl->sl, gl->tl);
- glVertex2f (x, y);
- glTexCoord2f (gl->sh, gl->tl);
- glVertex2f (x+pic->width, y);
- glTexCoord2f (gl->sh, gl->th);
- glVertex2f (x+pic->width, y+pic->height);
- glTexCoord2f (gl->sl, gl->th);
- glVertex2f (x, y+pic->height);
+ glTexCoord2f (gl->sl, gl->tl);glVertex2f (x, y);
+ glTexCoord2f (gl->sh, gl->tl);glVertex2f (x+pic->width, y);
+ glTexCoord2f (gl->sh, gl->th);glVertex2f (x+pic->width, y+pic->height);
+ glTexCoord2f (gl->sl, gl->th);glVertex2f (x, y+pic->height);
glEnd ();
}
/*
=============
-Draw_TransPic
-=============
-*/
-void Draw_TransPic (int x, int y, qpic_t *pic)
-{
- if (x < 0 || (unsigned)(x + pic->width) > vid.width || y < 0 || (unsigned)(y + pic->height) > vid.height)
- Sys_Error ("Draw_TransPic: bad coordinates");
-
-// glEnable(GL_BLEND);
-// glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-// glDisable(GL_ALPHA_TEST);
- Draw_Pic (x, y, pic);
-// glDisable(GL_BLEND);
-}
-
-
-/*
-=============
-Draw_TransPicTranslate
+Draw_PicTranslate
Only used for the player color selection menu
=============
*/
-void Draw_TransPicTranslate (int x, int y, qpic_t *pic, byte *translation)
+void Draw_PicTranslate (int x, int y, qpic_t *pic, byte *translation)
{
- int v, u, c;
- unsigned trans[64*64], *dest;
- byte *src;
- int p;
+ int i, c;
+ byte *trans, *src, *dest;
c = pic->width * pic->height;
+ src = menuplyr_pixels;
+ dest = trans = malloc(c);
+ for (i = 0;i < c;i++)
+ *dest++ = translation[*src++];
- dest = trans;
- for (v=0 ; v<64 ; v++, dest += 64)
- {
- src = &menuplyr_pixels[ ((v*pic->height)>>6) *pic->width];
- for (u=0 ; u<64 ; u++)
- {
- p = src[(u*pic->width)>>6];
- if (p == 255)
- dest[u] = p;
- else
- dest[u] = d_8to24table[translation[p]];
- }
- }
-
- glBindTexture(GL_TEXTURE_2D, GL_LoadTexture ("translatedplayerpic", 64, 64, (void *) trans, false, true, 1));
+ c = GL_LoadTexture ("translatedplayerpic", pic->width, pic->height, trans, false, true, 1);
+ free(trans);
- glColor3f(0.8,0.8,0.8);
+ if (!r_render.value)
+ return;
+ Draw_GenericPic (c, 1,1,1,1, x, y, pic->width, pic->height);
+ /*
+ glBindTexture(GL_TEXTURE_2D, c);
+ glColor3f(1,1,1);
glBegin (GL_QUADS);
- glTexCoord2f (0, 0);
- glVertex2f (x, y);
- glTexCoord2f (1, 0);
- glVertex2f (x+pic->width, y);
- glTexCoord2f (1, 1);
- glVertex2f (x+pic->width, y+pic->height);
- glTexCoord2f (0, 1);
- glVertex2f (x, y+pic->height);
+ glTexCoord2f (0, 0);glVertex2f (x, y);
+ glTexCoord2f (1, 0);glVertex2f (x+pic->width, y);
+ glTexCoord2f (1, 1);glVertex2f (x+pic->width, y+pic->height);
+ glTexCoord2f (0, 1);glVertex2f (x, y+pic->height);
glEnd ();
+ */
}
*/
void Draw_ConsoleBackground (int lines)
{
- // LordHavoc: changed alpha
- //int y = (vid.height >> 1);
-
- if (lines >= (int) vid.height)
- Draw_Pic(0, lines - vid.height, conback);
- else
- Draw_AlphaPic (0, lines - vid.height, conback, gl_conalpha.value*lines/vid.height);
- // Draw_AlphaPic (0, lines - vid.height, conback, (float)(1.2 * lines)/y);
+ Draw_GenericPic (conbacktexnum, 1,1,1,scr_conalpha.value*lines/vid.height, 0, lines - vid.height, vid.width, vid.height);
// LordHavoc: draw version
Draw_String(engineversionx, lines - vid.height + engineversiony, engineversion, 9999);
}
*/
void Draw_Fill (int x, int y, int w, int h, int c)
{
+ if (!r_render.value)
+ return;
glDisable (GL_TEXTURE_2D);
glColor3f (host_basepal[c*3]/255.0, host_basepal[c*3+1]/255.0, host_basepal[c*3+2]/255.0);
*/
void GL_Set2D (void)
{
+ if (!r_render.value)
+ return;
glViewport (glx, gly, glwidth, glheight);
glMatrixMode(GL_PROJECTION);
glDisable (GL_DEPTH_TEST);
glDisable (GL_CULL_FACE);
- glEnable (GL_BLEND); // was Disable
-// glEnable (GL_ALPHA_TEST);
+ glEnable (GL_BLEND);
glDisable (GL_ALPHA_TEST);
glEnable(GL_TEXTURE_2D);
int i;
for (i = 0;i < SHOWLMP_MAXLABELS;i++)
if (showlmp[i].isactive)
- Draw_TransPic(showlmp[i].x, showlmp[i].y, Draw_CachePic(showlmp[i].pic));
+ Draw_Pic(showlmp[i].x, showlmp[i].y, Draw_CachePic(showlmp[i].pic));
}
void SHOWLMP_clear()