]> git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - gl_models.c
minor buffer-size-safe improvement in Sys_Printf, and some other changes to it
[xonotic/darkplaces.git] / gl_models.c
index 9bf9b7243f994e0258187b3d02eb6baa853e8e5e..035e5b09486a1a6f451627789b3fa5621daccb70 100644 (file)
@@ -1,8 +1,8 @@
 
 #include "quakedef.h"
 
-cvar_t gl_transform = {"gl_transform", "1"};
-cvar_t gl_lockarrays = {"gl_lockarrays", "1"};
+cvar_t gl_transform = {0, "gl_transform", "1"};
+cvar_t gl_lockarrays = {0, "gl_lockarrays", "1"};
 
 typedef struct
 {
@@ -52,6 +52,7 @@ void GL_SetupModelTransform (vec3_t origin, vec3_t angles, vec_t scale)
            glRotatef (angles[2],  1, 0, 0);
 }
 
+// currently unused reflection effect texture
 void makechrometexture(void)
 {
        int i;
@@ -279,7 +280,7 @@ void GL_DrawModelMesh(rtexture_t *skin, byte *colors, maliashdr_t *maliashdr)
        }
        if (colors)
        {
-               glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors);
+               glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(byte[4]), colors);
                glEnableClientState(GL_COLOR_ARRAY);
        }
 
@@ -317,7 +318,7 @@ R_DrawAliasFrame
 =================
 */
 void R_LightModel(entity_t *ent, int numverts, vec3_t center, vec3_t basecolor);
-void R_DrawAliasFrame (maliashdr_t *maliashdr, float alpha, vec3_t color, entity_t *ent, int shadow, vec3_t org, vec3_t angles, vec_t scale, frameblend_t *blend, rtexture_t **skin, int colormap, int effects, int flags)
+void R_DrawAliasFrame (model_t *model, maliashdr_t *maliashdr, float alpha, vec3_t color, entity_t *ent, int shadow, vec3_t org, vec3_t angles, vec_t scale, frameblend_t *blend, rtexture_t **skin, int colormap, int effects, int flags)
 {
        if (gl_transform.value)
        {
@@ -341,9 +342,9 @@ void R_DrawAliasFrame (maliashdr_t *maliashdr, float alpha, vec3_t color, entity
        // prep the vertex array as early as possible
        if (r_render.value)
        {
-               glVertexPointer(3, GL_FLOAT, 0, aliasvert);
+               glVertexPointer(3, GL_FLOAT, sizeof(float[3]), aliasvert);
                glEnableClientState(GL_VERTEX_ARRAY);
-               glTexCoordPointer(2, GL_FLOAT, 0, (void *)((int) maliashdr->texdata + (int) maliashdr));
+               glTexCoordPointer(2, GL_FLOAT, sizeof(float[2]), (void *)((int) maliashdr->texdata + (int) maliashdr));
                glEnableClientState(GL_TEXTURE_COORD_ARRAY);
                GL_LockArray(0, maliashdr->numverts);
        }
@@ -360,7 +361,7 @@ void R_DrawAliasFrame (maliashdr_t *maliashdr, float alpha, vec3_t color, entity
                glEnable(GL_BLEND);
                glDepthMask(0);
        }
-       else if (alpha != 1.0)
+       else if (alpha != 1.0 || (model->flags2 & MODF_TRANSPARENT))
        {
                glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
                glEnable(GL_BLEND);
@@ -440,7 +441,7 @@ R_DrawQ2AliasFrame
 
 =================
 */
-void R_DrawQ2AliasFrame (md2mem_t *pheader, float alpha, vec3_t color, entity_t *ent, int shadow, vec3_t org, vec3_t angles, vec_t scale, frameblend_t *blend, rtexture_t *skin, int effects, int flags)
+void R_DrawQ2AliasFrame (model_t *model, md2mem_t *pheader, float alpha, vec3_t color, entity_t *ent, int shadow, vec3_t org, vec3_t angles, vec_t scale, frameblend_t *blend, rtexture_t *skin, int effects, int flags)
 {
        int *order, count;
        md2frame_t *frame1, *frame2, *frame3, *frame4;
@@ -478,8 +479,8 @@ void R_DrawQ2AliasFrame (md2mem_t *pheader, float alpha, vec3_t color, entity_t
        // LordHavoc: big mess...
        // using vertex arrays only slightly, although it is enough to prevent duplicates
        // (saving half the transforms)
-       glVertexPointer(3, GL_FLOAT, 0, aliasvert);
-       glColorPointer(4, GL_UNSIGNED_BYTE, 0, aliasvertcolor);
+       glVertexPointer(3, GL_FLOAT, sizeof(float[3]), aliasvert);
+       glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(byte[4]), aliasvertcolor);
        glEnableClientState(GL_VERTEX_ARRAY);
        glEnableClientState(GL_COLOR_ARRAY);
 
@@ -522,7 +523,7 @@ void R_DrawQ2AliasFrame (md2mem_t *pheader, float alpha, vec3_t color, entity_t
                // LordHavoc: big mess...
                // using vertex arrays only slightly, although it is enough to prevent duplicates
                // (saving half the transforms)
-               glVertexPointer(3, GL_FLOAT, 0, aliasvert);
+               glVertexPointer(3, GL_FLOAT, sizeof(float[3]), aliasvert);
                glEnableClientState(GL_VERTEX_ARRAY);
 
                order = (int *)((int)pheader + pheader->ofs_glcmds);
@@ -818,13 +819,13 @@ void GL_DrawZymoticModelMesh(byte *colors, zymtype1header_t *m)
                return;
        renderlist = (int *)(m->lump_render.start + (int) m);
        texture = (rtexture_t **)(m->lump_shaders.start + (int) m);
-       glVertexPointer(3, GL_FLOAT, 0, aliasvert);
+       glVertexPointer(3, GL_FLOAT, sizeof(float[3]), aliasvert);
        glEnableClientState(GL_VERTEX_ARRAY);
 
-       glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors);
+       glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(byte[4]), colors);
        glEnableClientState(GL_COLOR_ARRAY);
 
-       glTexCoordPointer(2, GL_FLOAT, 0, (float *)(m->lump_texcoords.start + (int) m));
+       glTexCoordPointer(2, GL_FLOAT, sizeof(float[2]), (float *)(m->lump_texcoords.start + (int) m));
        glEnableClientState(GL_TEXTURE_COORD_ARRAY);
 
        for (i = 0;i < m->numshaders;i++)
@@ -858,7 +859,7 @@ void GL_DrawZymoticModelMeshFog(vec3_t org, zymtype1header_t *m)
        VectorSubtract(org, r_origin, diff);
        glColor4f(fogcolor[0], fogcolor[1], fogcolor[2], exp(fogdensity/DotProduct(diff,diff)));
 
-       glVertexPointer(3, GL_FLOAT, 0, aliasvert);
+       glVertexPointer(3, GL_FLOAT, sizeof(float[3]), aliasvert);
        glEnableClientState(GL_VERTEX_ARRAY);
 
        for (i = 0;i < m->numshaders;i++)
@@ -879,7 +880,7 @@ void GL_DrawZymoticModelMeshFog(vec3_t org, zymtype1header_t *m)
 R_DrawZymoticFrame
 =================
 */
-void R_DrawZymoticFrame (zymtype1header_t *m, float alpha, vec3_t color, entity_t *ent, int shadow, vec3_t org, vec3_t angles, vec_t scale, frameblend_t *blend, int skinblah, int effects, int flags)
+void R_DrawZymoticFrame (model_t *model, zymtype1header_t *m, float alpha, vec3_t color, entity_t *ent, int shadow, vec3_t org, vec3_t angles, vec_t scale, frameblend_t *blend, int skinblah, int effects, int flags)
 {
        ZymoticLerpBones(m->numbones, (zymbonematrix *)(m->lump_poses.start + (int) m), blend, (zymbone_t *)(m->lump_bones.start + (int) m), org, angles, scale);
        ZymoticTransformVerts(m->numverts, (int *)(m->lump_vertbonecounts.start + (int) m), (zymvertex_t *)(m->lump_verts.start + (int) m));
@@ -967,9 +968,9 @@ void R_DrawAliasModel (entity_t *ent, int cull, float alpha, model_t *clmodel, f
 
        c_alias_polys += clmodel->numtris;
        if (clmodel->aliastype == ALIASTYPE_ZYM)
-               R_DrawZymoticFrame (modelheader, alpha, color, ent, ent != &cl.viewent, org, angles, scale, blend, 0                   , effects, flags);
+               R_DrawZymoticFrame (clmodel, modelheader, alpha, color, ent, ent != &cl.viewent, org, angles, scale, blend, 0                   , effects, flags);
        else if (clmodel->aliastype == ALIASTYPE_MD2)
-               R_DrawQ2AliasFrame (modelheader, alpha, color, ent, ent != &cl.viewent, org, angles, scale, blend, skinset[0]          , effects, flags);
+               R_DrawQ2AliasFrame (clmodel, modelheader, alpha, color, ent, ent != &cl.viewent, org, angles, scale, blend, skinset[0]          , effects, flags);
        else
-               R_DrawAliasFrame   (modelheader, alpha, color, ent, ent != &cl.viewent, org, angles, scale, blend, skinset   , colormap, effects, flags);
+               R_DrawAliasFrame   (clmodel, modelheader, alpha, color, ent, ent != &cl.viewent, org, angles, scale, blend, skinset   , colormap, effects, flags);
 }