From 5f877424161c52fafe28d2de979d349502171ad7 Mon Sep 17 00:00:00 2001 From: lordhavoc Date: Thu, 18 Oct 2001 00:59:02 +0000 Subject: [PATCH] probable fix for severe model rendering bugs in 3DFX voodoo4/5 win32 drivers, and G400 win32 drivers (they don't seem to handle a sizeof == 0 case for the array pointer stepping) git-svn-id: svn://svn.icculus.org/twilight/trunk/darkplaces@937 d7cf8633-e32d-0410-b094-e92efae38249 --- gl_models.c | 20 ++++++++++---------- r_explosion.c | 4 ++-- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/gl_models.c b/gl_models.c index 9bf9b724..65eac04e 100644 --- a/gl_models.c +++ b/gl_models.c @@ -279,7 +279,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); } @@ -341,9 +341,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); } @@ -478,8 +478,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 +522,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 +818,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 +858,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++) diff --git a/r_explosion.c b/r_explosion.c index 74e7dd42..ae40cb45 100644 --- a/r_explosion.c +++ b/r_explosion.c @@ -184,8 +184,8 @@ void R_DrawExplosion(explosion_t *e) glColor4f(1,1,1,e->alpha); glDisable(GL_TEXTURE_2D); // glBindTexture(GL_TEXTURE_2D, explosiontexture); - glVertexPointer(3, GL_FLOAT, 0, (float *) &e->vert[0][0]); -// glTexCoordPointer(2, GL_FLOAT, 0, (float *) &explosiontexcoords[0][0]); + glVertexPointer(3, GL_FLOAT, sizeof(float[3]), (float *) &e->vert[0][0]); +// glTexCoordPointer(2, GL_FLOAT, sizeof(float[2]), (float *) &explosiontexcoords[0][0]); glEnableClientState(GL_VERTEX_ARRAY); // glEnableClientState(GL_TEXTURE_COORD_ARRAY); glDrawElements(GL_TRIANGLES, EXPLOSIONTRIS, GL_UNSIGNED_INT, indexlist); -- 2.39.2