From 0d6d5e545a2b57701942b2357be23cd2626f9abd Mon Sep 17 00:00:00 2001 From: Steven Fuller Date: Sun, 28 Sep 2008 21:37:59 -0700 Subject: [PATCH] Changed rhw into w as that was how it was used. Also fixed a few warnings. --- src/opengl.c | 148 +++++++++++++++++++++++++-------------------------- 1 file changed, 72 insertions(+), 76 deletions(-) diff --git a/src/opengl.c b/src/opengl.c index 76a7780..32a8ffc 100644 --- a/src/opengl.c +++ b/src/opengl.c @@ -474,7 +474,7 @@ void ReleaseD3DTexture(void *tex) { D3DTexture *TextureHandle = (D3DTexture *)tex; - pglDeleteTextures(1, &(TextureHandle->id)); + pglDeleteTextures(1, (GLuint*) &(TextureHandle->id)); free(TextureHandle); } @@ -614,24 +614,22 @@ void D3D_ZBufferedGouraudTexturedPolygon_Output(POLYHEADER *inputPolyPtr, RENDER RENDERVERTEX *vertices = &renderVerticesPtr[i]; GLfloat x, y, z; GLfloat s, t; - GLfloat rhw = 1.0/(float)vertices->Z, zvalue; + GLfloat w = (float)vertices->Z; + GLfloat zvalue; s = ((float)vertices->U) * RecipW + (1.0f/256.0f); t = ((float)vertices->V) * RecipH + (1.0f/256.0f); -// if (s < 0.0 || t < 0.0 || s >= 1.0 || t >= 1.0) -// fprintf(stderr, "HEY! s = %f, t = %f (%d, %d)\n", s, t, vertices->U, vertices->V); - x = ((float)vertices->X*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreX); y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); zvalue = vertices->Z+HeadUpDisplayZOffset; z = 1.0f - 2.0f*ZNear/zvalue; - varrp->v[0] = svarrp->v[0] = x/rhw; - varrp->v[1] = svarrp->v[1] = y/rhw; - varrp->v[2] = svarrp->v[2] = z/rhw; - varrp->v[3] = svarrp->v[3] = 1/rhw; + varrp->v[0] = svarrp->v[0] = x*w; + varrp->v[1] = svarrp->v[1] = y*w; + varrp->v[2] = svarrp->v[2] = z*w; + varrp->v[3] = svarrp->v[3] = w; varrp->t[0] = /**/ svarrp->t[0] = /**/ s; varrp->t[1] = /**/ svarrp->t[1] = /**/ t; @@ -683,26 +681,22 @@ void D3D_SkyPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX *renderVertice RENDERVERTEX *vertices = &renderVerticesPtr[i]; GLfloat x, y, z; GLfloat s, t; - GLfloat rhw; + GLfloat w; - rhw = 1.0 / (float)vertices->Z; + w = (float)vertices->Z; s = ((float)vertices->U) * RecipW + (1.0f/256.0f); t = ((float)vertices->V) * RecipH + (1.0f/256.0f); -// if (s < 0.0 || t < 0.0 || s >= 1.0 || t >= 1.0) -// fprintf(stderr, "HEY! s = %f, t = %f (%d, %d)\n", s, t, vertices->U, vertices->V); - - x = ((float)vertices->X*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreX); y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); z = 1.0f; - varrp->v[0] = x/rhw; - varrp->v[1] = y/rhw; - varrp->v[2] = z/rhw; - varrp->v[3] = 1/rhw; + varrp->v[0] = x*w; + varrp->v[1] = y*w; + varrp->v[2] = z*w; + varrp->v[3] = w; varrp->t[0] = s; varrp->t[1] = t; @@ -756,28 +750,24 @@ void D3D_ZBufferedCloakedPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX * GLfloat x, y, z; GLfloat s, t; - GLfloat rhw; + GLfloat w; GLfloat zvalue; - rhw = 1.0 / (float)vertices->Z; + w = (float)vertices->Z; s = (((float)vertices->U/65536.0f)+0.5) * RecipW; t = (((float)vertices->V/65536.0f)+0.5) * RecipH; -// if (s < 0.0 || t < 0.0 || s >= 1.0 || t >= 1.0) -// fprintf(stderr, "HEY! s = %f, t = %f (%d, %d)\n", s, t, vertices->U, vertices->V); - - x = ((float)vertices->X*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreX); y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); zvalue = vertices->Z+HeadUpDisplayZOffset; z = 1.0 - 2*ZNear/zvalue; - varrp->v[0] = x/rhw; - varrp->v[1] = y/rhw; - varrp->v[2] = z/rhw; - varrp->v[3] = 1/rhw; + varrp->v[0] = x*w; + varrp->v[1] = y*w; + varrp->v[2] = z*w; + varrp->v[3] = w; varrp->t[0] = s; varrp->t[1] = t; @@ -861,9 +851,10 @@ void D3D_Decal_Output(DECAL *decalPtr, RENDERVERTEX *renderVerticesPtr) RENDERVERTEX *vertices = &renderVerticesPtr[i]; GLfloat x, y, z, zvalue; - GLfloat s, t, rhw; + GLfloat s, t; + GLfloat w; - rhw = 1.0 / (float)vertices->Z; + w = (float)vertices->Z; x = ((float)vertices->X*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreX); y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); @@ -874,10 +865,10 @@ void D3D_Decal_Output(DECAL *decalPtr, RENDERVERTEX *renderVerticesPtr) zvalue = vertices->Z+HeadUpDisplayZOffset; z = 1.0f - 2.0f*ZNear/zvalue; - varrp->v[0] = x/rhw; - varrp->v[1] = y/rhw; - varrp->v[2] = z/rhw; - varrp->v[3] = 1/rhw; + varrp->v[0] = x*w; + varrp->v[1] = y*w; + varrp->v[2] = z*w; + varrp->v[3] = w; varrp->t[0] = s; varrp->t[1] = t; @@ -961,7 +952,7 @@ void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr) GLfloat x, y, z; GLfloat s, t; - GLfloat rhw = 1/(float)vertices->Z; + GLfloat w = (float)vertices->Z; s = ((float)(vertices->U>>16)+.5) * RecipW; t = ((float)(vertices->V>>16)+.5) * RecipH; @@ -970,17 +961,17 @@ void D3D_Particle_Output(PARTICLE *particlePtr, RENDERVERTEX *renderVerticesPtr) y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); if (particleDescPtr->IsDrawnInFront) { - z = -0.999f; /* ... */ + z = -0.99999f; /* ... */ } else if (particleDescPtr->IsDrawnAtBack) { - z = 0.999f; + z = 0.99999f; } else { z = 1.0 - 2.0*ZNear/((float)vertices->Z); /* currently maps [ZNear, inf) to [-1, 1], probably could be more precise with a ZFar */ } - varrp->v[0] = x/rhw; - varrp->v[1] = y/rhw; - varrp->v[2] = z/rhw; - varrp->v[3] = 1/rhw; + varrp->v[0] = x*w; + varrp->v[1] = y*w; + varrp->v[2] = z*w; + varrp->v[3] = w; varrp->t[0] = s; varrp->t[1] = t; @@ -1007,7 +998,8 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER RENDERVERTEX *vertices = &renderVerticesPtr[i]; GLfloat x, y, z; - float rhw, zvalue; + GLfloat w; + GLfloat zvalue; x = ((float)vertices->X*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreX); y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); @@ -1015,12 +1007,12 @@ void D3D_PredatorThermalVisionPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVER zvalue = vertices->Z+HeadUpDisplayZOffset; z = 1.0 - 2*ZNear/zvalue; - rhw = 1.0/(float)vertices->Z; + w = (float)vertices->Z; - varrp->v[0] = x/rhw; - varrp->v[1] = y/rhw; - varrp->v[2] = z/rhw; - varrp->v[3] = 1/rhw; + varrp->v[0] = x*w; + varrp->v[1] = y*w; + varrp->v[2] = z*w; + varrp->v[3] = w; varrp->c[0] = vertices->R; varrp->c[1] = vertices->G; @@ -1046,20 +1038,21 @@ void D3D_ZBufferedGouraudPolygon_Output(POLYHEADER *inputPolyPtr, RENDERVERTEX * for (i = 0; i < RenderPolygon.NumberOfVertices; i++) { RENDERVERTEX *vertices = &renderVerticesPtr[i]; GLfloat x, y, z; - float rhw, zvalue; + GLfloat w; + GLfloat zvalue; zvalue = vertices->Z+HeadUpDisplayZOffset; z = 1.0 - 2*ZNear/zvalue; - rhw = 1.0/(float)vertices->Z; + w = (float)vertices->Z; x = ((float)vertices->X*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreX); y = -((float)vertices->Y*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices->Z*(float)ScreenDescriptorBlock.SDB_CentreY); - varrp->v[0] = x/rhw; - varrp->v[1] = y/rhw; - varrp->v[2] = z/rhw; - varrp->v[3] = 1/rhw; + varrp->v[0] = x*w; + varrp->v[1] = y*w; + varrp->v[2] = z*w; + varrp->v[3] = w; varrp->c[0] = vertices->R; varrp->c[1] = vertices->G; @@ -1825,7 +1818,7 @@ int Hardware_RenderSmallMenuText(char *textPtr, int x, int y, int alpha, enum AV case AVPMENUFORMAT_RIGHTJUSTIFIED: { int length = 0; - signed char *ptr = textPtr; + signed char *ptr = (signed char*) textPtr; while(*ptr) { @@ -1838,7 +1831,7 @@ int Hardware_RenderSmallMenuText(char *textPtr, int x, int y, int alpha, enum AV case AVPMENUFORMAT_CENTREJUSTIFIED: { int length = 0; - signed char *ptr = textPtr; + signed char *ptr = (signed char*) textPtr; while(*ptr) { @@ -1877,7 +1870,7 @@ int Hardware_RenderSmallMenuText_Coloured(char *textPtr, int x, int y, int alpha case AVPMENUFORMAT_RIGHTJUSTIFIED: { int length = 0; - signed char *ptr = textPtr; + signed char *ptr = (signed char*) textPtr; while(*ptr) { @@ -1890,7 +1883,7 @@ int Hardware_RenderSmallMenuText_Coloured(char *textPtr, int x, int y, int alpha case AVPMENUFORMAT_CENTREJUSTIFIED: { int length = 0; - signed char *ptr = textPtr; + signed char *ptr = (signed char*) textPtr; while(*ptr) { @@ -2602,18 +2595,19 @@ void D3D_DrawParticle_Rain(PARTICLE *particlePtr,VECTORCH *prevPositionPtr) CheckTriangleBuffer(3, 0, 0, 0, NULL, TRANSLUCENCY_NORMAL, -1); for (i = 0; i < 3; i++) { - GLfloat xf, yf, zf, rhw; + GLfloat xf, yf, zf; + GLfloat w; xf = ((float)vertices[i].vx*((float)Global_VDB_Ptr->VDB_ProjX+1.0f))/((float)vertices[i].vz*(float)ScreenDescriptorBlock.SDB_CentreX); yf = -((float)vertices[i].vy*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)vertices[i].vz*(float)ScreenDescriptorBlock.SDB_CentreY); zf = 1.0f - 2.0f*ZNear/(float)vertices[i].vz; - rhw = 1.0f / (float)vertices[i].vz; + w = (float)vertices[i].vz; - varrp->v[0] = xf/rhw; - varrp->v[1] = yf/rhw; - varrp->v[2] = zf/rhw; - varrp->v[3] = 1.0f/rhw; + varrp->v[0] = xf*w; + varrp->v[1] = yf*w; + varrp->v[2] = zf*w; + varrp->v[3] = w; if (i == 0) { varrp->c[0] = 0; @@ -4471,7 +4465,8 @@ void D3D_DrawMoltenMetalMesh_Unclipped(void) start = varrc; for (i=0; i<256; i++) { GLfloat xf, yf, zf; - GLfloat sf, tf, rhw; + GLfloat sf, tf; + GLfloat w; int r, g, b, a; if (point->vz < 1) point->vz = 1; @@ -4480,7 +4475,7 @@ void D3D_DrawMoltenMetalMesh_Unclipped(void) yf = -((float)point->vy*((float)Global_VDB_Ptr->VDB_ProjY+1.0f))/((float)point->vz*(float)ScreenDescriptorBlock.SDB_CentreY); z = point->vz + HeadUpDisplayZOffset; - rhw = 1.0f / (float)point->vz; + w = (float)point->vz; zf = 1.0f - 2.0f*ZNear/(float)z; sf = pointWS->vx*WaterUScale+(1.0f/256.0f); @@ -4492,10 +4487,10 @@ void D3D_DrawMoltenMetalMesh_Unclipped(void) a = (MeshVertexColour[i] >> 24) & 0xFF; - varrp->v[0] = xf/rhw; - varrp->v[1] = yf/rhw; - varrp->v[2] = zf/rhw; - varrp->v[3] = 1.0f/rhw; + varrp->v[0] = xf*w; + varrp->v[1] = yf*w; + varrp->v[2] = zf*w; + varrp->v[3] = w; varrp->t[0] = sf; varrp->t[1] = tf; @@ -4565,7 +4560,8 @@ void D3D_DrawMoltenMetalMesh_Clipped(void) for (i=0; i<256; i++) { GLfloat xf, yf, zf; - GLfloat sf, tf, rhw; + GLfloat sf, tf; + GLfloat w; int r, g, b, a; if (point->vz < 1) point->vz = 1; @@ -4589,7 +4585,7 @@ void D3D_DrawMoltenMetalMesh_Clipped(void) tf = pointWS->vy*WaterVScale+(1.0f/256.0f); z = point->vz + HeadUpDisplayZOffset; - rhw = 1.0f / (float)point->vz; + w = (float)point->vz; b = (MeshVertexColour[i] >> 0) & 0xFF; g = (MeshVertexColour[i] >> 8) & 0xFF; @@ -4600,10 +4596,10 @@ void D3D_DrawMoltenMetalMesh_Clipped(void) yf = -((float)y - (float)ScreenDescriptorBlock.SDB_CentreY - 0.5f) / ((float)ScreenDescriptorBlock.SDB_CentreY - 0.5f); zf = 1.0f - 2.0f*ZNear/(float)z; - varrp->v[0] = xf/rhw; - varrp->v[1] = yf/rhw; - varrp->v[2] = zf/rhw; - varrp->v[3] = 1.0f/rhw; + varrp->v[0] = xf*w; + varrp->v[1] = yf*w; + varrp->v[2] = zf*w; + varrp->v[3] = w; varrp->t[0] = sf; varrp->t[1] = tf;