]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_draw.c
clarifications about the format of svc_fog
[xonotic/darkplaces.git] / gl_draw.c
index 388ba9e8d5465683ca289452be75fd5b2001c086..bad2c8c711cfe2db24a1a25a11e985f59a88b4c3 100644 (file)
--- a/gl_draw.c
+++ b/gl_draw.c
@@ -25,15 +25,12 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 #define GL_COLOR_INDEX8_EXT     0x80E5
 
-extern unsigned char d_15to8table[65536];
-
 cvar_t         qsg_version = {"qsg_version", "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
@@ -42,8 +39,7 @@ 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;
 
 /*
 =============================================================================
@@ -56,6 +52,7 @@ qpic_t                *conback = (qpic_t *)&conback_buffer;
 =============================================================================
 */
 
+/*
 #define        MAX_SCRAPS              2
 #define        BLOCK_WIDTH             256
 #define        BLOCK_HEIGHT    256
@@ -119,6 +116,7 @@ void Scrap_Upload (void)
                scraptexnum[texnum] = GL_LoadTexture (va("scrapslot%d", texnum), BLOCK_WIDTH, BLOCK_HEIGHT, scrap_texels[texnum], false, true, 1);
        scrap_dirty = false;
 }
+*/
 
 //=============================================================================
 /* Support Routines */
@@ -139,7 +137,7 @@ byte                menuplyr_pixels[4096];
 int            pic_texels;
 int            pic_count;
 
-int GL_LoadPicTexture (qpic_t *pic);
+extern int GL_LoadPicTexture (qpic_t *pic);
 
 qpic_t *Draw_PicFromWad (char *name)
 {
@@ -150,6 +148,7 @@ qpic_t *Draw_PicFromWad (char *name)
        gl = (glpic_t *)p->data;
 
        // load little ones into the scrap
+       /*
        if (p->width < 64 && p->height < 64)
        {
                int             x, y;
@@ -175,12 +174,13 @@ qpic_t *Draw_PicFromWad (char *name)
        }
        else
        {
+       */
                gl->texnum = GL_LoadPicTexture (p);
                gl->sl = 0;
                gl->sh = 1;
                gl->tl = 0;
                gl->th = 1;
-       }
+       //}
        return p;
 }
 
@@ -224,7 +224,9 @@ qpic_t      *Draw_CachePic (char *path)
        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;
@@ -233,36 +235,8 @@ qpic_t     *Draw_CachePic (char *path)
        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;
-
 /*
 ===============
 Draw_Init
@@ -274,17 +248,12 @@ extern int buildnumber;
 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
 
@@ -292,16 +261,9 @@ void gl_draw_start()
                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));
+//     memset(scraptexnum, 0, sizeof(scraptexnum));
 
        // get the other pics we need
        draw_disc = Draw_PicFromWad ("disc");
@@ -323,22 +285,12 @@ void GL_Draw_Init (void)
 
        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
@@ -382,7 +334,7 @@ void Draw_Character (int x, int y, int num)
                return;
        glBindTexture(GL_TEXTURE_2D, char_texture);
        // LordHavoc: NEAREST mode on text if not scaling up
-       if ((int) vid.width < glwidth)
+       if (glwidth < (int) vid.width)
        {
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
@@ -426,7 +378,7 @@ void Draw_String (int x, int y, char *str, int maxlen)
        glBindTexture(GL_TEXTURE_2D, char_texture);
 
        // LordHavoc: NEAREST mode on text if not scaling up
-       if ((int) vid.width < glwidth)
+       if (glwidth < (int) vid.width)
        {
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
                glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
@@ -440,14 +392,10 @@ void Draw_String (int x, int y, char *str, int maxlen)
                {
                        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;
        }
@@ -458,30 +406,18 @@ void Draw_String (int x, int y, char *str, int maxlen)
        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)
 {
        if (!r_render.value)
                return;
-       glDisable(GL_ALPHA_TEST);
-//     glEnable (GL_BLEND);
-       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-//     glCullFace(GL_FRONT);
        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);
 }
 
 /*
@@ -493,22 +429,18 @@ void Draw_AlphaPic (int x, int y, qpic_t *pic, float alpha)
 {
        glpic_t                 *gl;
 
-       if (scrap_dirty)
-               Scrap_Upload ();
+//     if (scrap_dirty)
+//             Scrap_Upload ();
        gl = (glpic_t *)pic->data;
        if (!r_render.value)
                return;
        glColor4f(1,1,1,alpha);
        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 ();
 }
 
@@ -522,22 +454,18 @@ void Draw_Pic (int x, int y, qpic_t *pic)
 {
        glpic_t                 *gl;
 
-       if (scrap_dirty)
-               Scrap_Upload ();
+//     if (scrap_dirty)
+//             Scrap_Upload ();
        gl = (glpic_t *)pic->data;
        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 ();
 }
 
@@ -565,18 +493,17 @@ void Draw_PicTranslate (int x, int y, qpic_t *pic, byte *translation)
 
        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 ();
+       */
 }
 
 
@@ -588,14 +515,7 @@ Draw_ConsoleBackground
 */
 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, scr_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);
 }
@@ -651,8 +571,7 @@ void GL_Set2D (void)
 
        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);