- draw_chars = W_GetLumpName ("conchars");
- for (i=0 ; i<128*128 ; i++)
- if (draw_chars[i] == 0)
- draw_chars[i] = 255; // proper transparent color
-
- // now turn them into textures
- char_texture = GL_LoadTexture ("charset", 128, 128, draw_chars, false, true, 1);
- }
-
- conbacktexnum = loadtextureimage("gfx/conback", 0, 0, false, false);
-
- memset(scraptexnum, 0, sizeof(scraptexnum));
-
- // get the other pics we need
- draw_disc = Draw_PicFromWad ("disc");
-}
-
-void gl_draw_shutdown()
-{
-}
-
-char engineversion[40];
-int engineversionx, engineversiony;
-
-extern void GL_Textures_Init();
-void GL_Draw_Init (void)
-{
- int i;
- Cvar_RegisterVariable (&qsg_version);
- Cvar_RegisterVariable (&scr_conalpha);
-
- Cmd_AddCommand ("loadsky", &LoadSky_f);
-
-#ifdef NEHAHRA
-#if defined(__linux__)
- sprintf (engineversion, "DPNehahra Linux GL %.2f build %3i", (float) VERSION, buildnumber);
-#elif defined(WIN32)
- sprintf (engineversion, "DPNehahra Windows GL %.2f build %3i", (float) VERSION, buildnumber);
-#else
- sprintf (engineversion, "DPNehahra Unknown GL %.2f build %3i", (float) VERSION, buildnumber);
-#endif
-#else
-#if defined(__linux__)
- sprintf (engineversion, "DarkPlaces Linux GL %.2f build %3i", (float) VERSION, buildnumber);
-#elif defined(WIN32)
- sprintf (engineversion, "DarkPlaces Windows GL %.2f build %3i", (float) VERSION, buildnumber);
-#else
- sprintf (engineversion, "DarkPlaces Unknown GL %.2f build %3i", (float) VERSION, buildnumber);
-#endif
-#endif
- for (i = 0;i < 40 && engineversion[i];i++)
- engineversion[i] += 0x80; // shift to orange
- engineversionx = vid.width - strlen(engineversion) * 8 - 8;
- engineversiony = vid.height - 8;
-
- GL_Textures_Init();
- R_RegisterModule("GL_Draw", gl_draw_start, gl_draw_shutdown);
-}
-
-/*
-================
-Draw_Character
-
-Draws one 8*8 graphics character with 0 being transparent.
-It can be clipped to the top of the screen to allow the console to be
-smoothly scrolled off.
-================
-*/
-void Draw_Character (int x, int y, int num)
-{
- int row, col;
- float frow, fcol, size;
-
- if (num == 32)
- return; // space
-
- num &= 255;
-
- if (y <= -8)
- return; // totally off screen
-
- row = num>>4;
- col = num&15;
-
- frow = row*0.0625;
- 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)
- {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
-
- glColor3f(1,1,1);
- glBegin (GL_QUADS);
- glTexCoord2f (fcol, frow);
- glVertex2f (x, y);
- glTexCoord2f (fcol + size, frow);
- glVertex2f (x+8, y);
- glTexCoord2f (fcol + size, frow + size);
- glVertex2f (x+8, y+8);
- glTexCoord2f (fcol, frow + size);
- glVertex2f (x, y+8);
- glEnd ();
-
- // LordHavoc: revert to LINEAR mode
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
-}
-
-/*
-================
-Draw_String
-================
-*/
-// LordHavoc: sped this up a lot, and added maxlen
-void Draw_String (int x, int y, char *str, int maxlen)
-{
- 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)
- maxlen = strlen(str);
- else if (maxlen > (int) strlen(str))
- maxlen = strlen(str);
- glBindTexture(GL_TEXTURE_2D, char_texture);
-
- // LordHavoc: NEAREST mode on text if not scaling up
- if ((int) vid.width < glwidth)
- {
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
- }
-
- glColor3f(1,1,1);
- glBegin (GL_QUADS);
- while (maxlen-- && x < (int) vid.width) // stop rendering when out of characters or room
- {
- if ((num = *str++) != 32) // skip spaces