OpenGL library is now loaded dynamically.

This commit is contained in:
Steven Fuller 2003-10-15 06:10:42 +00:00 committed by Patryk Obara
parent c77756e6fe
commit d97c4252d6
5 changed files with 824 additions and 284 deletions

View file

@ -2,8 +2,7 @@
#include <stdlib.h>
#include <string.h>
#include <GL/gl.h>
#include <GL/glext.h>
#include "oglfunc.h"
#include "fixer.h"
@ -55,11 +54,9 @@ static D3DTexture *CurrentlyBoundTexture = NULL;
#define TA_MAXVERTICES 2048
#define TA_MAXTRIANGLES 2048
#if 0 /* NVIDIA header problem */
#if GL_EXT_secondary_color
extern PFNGLSECONDARYCOLORPOINTEREXTPROC pglSecondaryColorPointerEXT;
#endif
#endif
typedef struct VertexArray
{
@ -93,28 +90,28 @@ static void SetTranslucencyMode(enum TRANSLUCENCY_TYPE mode)
switch(mode) {
case TRANSLUCENCY_OFF:
if (TRIPTASTIC_CHEATMODE||MOTIONBLUR_CHEATMODE) {
glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
pglBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA);
} else {
glBlendFunc(GL_ONE, GL_ZERO);
pglBlendFunc(GL_ONE, GL_ZERO);
}
break;
case TRANSLUCENCY_NORMAL:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
pglBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
break;
case TRANSLUCENCY_COLOUR:
glBlendFunc(GL_ZERO, GL_SRC_COLOR);
pglBlendFunc(GL_ZERO, GL_SRC_COLOR);
break;
case TRANSLUCENCY_INVCOLOUR:
glBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
pglBlendFunc(GL_ZERO, GL_ONE_MINUS_SRC_COLOR);
break;
case TRANSLUCENCY_GLOWING:
glBlendFunc(GL_SRC_ALPHA, GL_ONE);
pglBlendFunc(GL_SRC_ALPHA, GL_ONE);
break;
case TRANSLUCENCY_DARKENINGCOLOUR:
glBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
pglBlendFunc(GL_ONE_MINUS_DST_COLOR, GL_ZERO);
break;
case TRANSLUCENCY_JUSTSETZ:
glBlendFunc(GL_ZERO, GL_ONE);
pglBlendFunc(GL_ZERO, GL_ONE);
break;
default:
fprintf(stderr, "RenderPolygon.TranslucencyMode: invalid %d\n", RenderPolygon.TranslucencyMode);
@ -133,31 +130,31 @@ A few things:
void InitOpenGL()
{
CurrentTranslucencyMode = TRANSLUCENCY_OFF;
glBlendFunc(GL_ONE, GL_ZERO);
pglBlendFunc(GL_ONE, GL_ZERO);
CurrentFilteringMode = FILTERING_BILINEAR_OFF;
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
CurrentlyBoundTexture = NULL;
glBindTexture(GL_TEXTURE_2D, 0);
pglBindTexture(GL_TEXTURE_2D, 0);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(4, GL_FLOAT, sizeof(varr[0]), varr[0].v);
pglEnableClientState(GL_VERTEX_ARRAY);
pglVertexPointer(4, GL_FLOAT, sizeof(varr[0]), varr[0].v);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(varr[0]), varr[0].t);
pglEnableClientState(GL_TEXTURE_COORD_ARRAY);
pglTexCoordPointer(2, GL_FLOAT, sizeof(varr[0]), varr[0].t);
glEnableClientState(GL_COLOR_ARRAY);
glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(varr[0]), varr[0].c);
pglEnableClientState(GL_COLOR_ARRAY);
pglColorPointer(4, GL_UNSIGNED_BYTE, sizeof(varr[0]), varr[0].c);
#if 0
#if GL_EXT_secondary_color
if (useseparate) {
glEnableClientState(GL_SEPARATE_COLOR_ARRAY_EXT);
pglEnableClientState(GL_SEPARATE_COLOR_ARRAY_EXT);
pglSecondaryColorPointerEXT(4, GL_UNSIGNED_BYTE, sizeof(svarr[0]), svarr[0].c);
} else {
glDisableClientState(GL_SEPARATE_COLOR_ARRAY_EXT);
pglDisableClientState(GL_SEPARATE_COLOR_ARRAY_EXT);
}
#endif
#endif
@ -181,15 +178,15 @@ static void FlushTriangleBuffers(int backup)
if (tarrc) {
#if 1
glBegin(GL_TRIANGLES);
pglBegin(GL_TRIANGLES);
for (i = 0; i < tarrc; i++) {
glArrayElement(tarr[i].a);
glArrayElement(tarr[i].b);
glArrayElement(tarr[i].c);
pglArrayElement(tarr[i].a);
pglArrayElement(tarr[i].b);
pglArrayElement(tarr[i].c);
}
glEnd();
pglEnd();
#else
glDrawElements(GL_TRIANGLES, tarrc*3, GL_UNSIGNED_INT, tarr);
pglDrawElements(GL_TRIANGLES, tarrc*3, GL_UNSIGNED_INT, tarr);
#endif
tarrc = 0;
@ -202,36 +199,36 @@ static void FlushTriangleBuffers(int backup)
if (starrc) {
if (CurrentlyBoundTexture != NULL) {
if (!backup) CurrentlyBoundTexture = NULL;
glBindTexture(GL_TEXTURE_2D, 0);
pglBindTexture(GL_TEXTURE_2D, 0);
}
if (CurrentTranslucencyMode != TRANSLUCENCY_GLOWING) {
if (!backup) CurrentTranslucencyMode = TRANSLUCENCY_GLOWING;
SetTranslucencyMode(TRANSLUCENCY_GLOWING);
//if (CurrentTranslucencyMode == TRANSLUCENCY_OFF)
// glEnable(GL_BLEND);
// pglEnable(GL_BLEND);
//glBlendFunc(GL_SRC_ALPHA, GL_ONE);
}
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
pglDisableClientState(GL_TEXTURE_COORD_ARRAY);
#if 1
glBegin(GL_TRIANGLES);
pglBegin(GL_TRIANGLES);
for (i = 0; i < starrc; i++) {
glArrayElement(starr[i].a);
glArrayElement(starr[i].b);
glArrayElement(starr[i].c);
pglArrayElement(starr[i].a);
pglArrayElement(starr[i].b);
pglArrayElement(starr[i].c);
}
glEnd();
pglEnd();
#else
glDrawElements(GL_TRIANGLES, starrc*3, GL_UNSIGNED_INT, starr);
pglDrawElements(GL_TRIANGLES, starrc*3, GL_UNSIGNED_INT, starr);
#endif
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
pglEnableClientState(GL_TEXTURE_COORD_ARRAY);
if (backup) {
if (CurrentlyBoundTexture)
glBindTexture(GL_TEXTURE_2D, CurrentlyBoundTexture->id);
pglBindTexture(GL_TEXTURE_2D, CurrentlyBoundTexture->id);
if (CurrentTranslucencyMode != TRANSLUCENCY_GLOWING)
SetTranslucencyMode(CurrentTranslucencyMode);
} else {
@ -256,24 +253,24 @@ static void CheckBoundTextureIsCorrect(D3DTexture *tex)
FlushTriangleBuffers(1);
if (tex == NULL) {
glBindTexture(GL_TEXTURE_2D, 0);
pglBindTexture(GL_TEXTURE_2D, 0);
CurrentlyBoundTexture = NULL;
return;
}
glBindTexture(GL_TEXTURE_2D, tex->id);
pglBindTexture(GL_TEXTURE_2D, tex->id);
if (tex->filter != CurrentFilteringMode) {
switch(CurrentFilteringMode) {
case FILTERING_BILINEAR_OFF:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
break;
case FILTERING_BILINEAR_ON:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
break;
default:
break;
@ -294,12 +291,12 @@ static void CheckFilteringModeIsCorrect(enum FILTERING_MODE_ID filter)
switch(CurrentFilteringMode) {
case FILTERING_BILINEAR_OFF:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
break;
case FILTERING_BILINEAR_ON:
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
break;
default:
break;
@ -430,14 +427,14 @@ static void SelectPolygonBeginType(int points)
switch(points) {
case 3:
glBegin(GL_TRIANGLES);
pglBegin(GL_TRIANGLES);
break;
case 4:
case 5:
case 6:
case 7:
case 8:
glBegin(GL_TRIANGLE_FAN);
pglBegin(GL_TRIANGLE_FAN);
break;
default:
fprintf(stderr, "SelectPolygonBeginType: points = %d\n", points);
@ -451,24 +448,24 @@ GLuint CreateOGLTexture(D3DTexture *tex, unsigned char *buf)
FlushTriangleBuffers(1);
glGenTextures(1, &h);
pglGenTextures(1, &h);
glBindTexture(GL_TEXTURE_2D, h);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
pglBindTexture(GL_TEXTURE_2D, h);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
pglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex->w, tex->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
pglTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tex->w, tex->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
pglTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE);
tex->id = h;
tex->filter = FILTERING_BILINEAR_ON;
if (CurrentlyBoundTexture)
glBindTexture(GL_TEXTURE_2D, CurrentlyBoundTexture->id); /* restore current */
pglBindTexture(GL_TEXTURE_2D, CurrentlyBoundTexture->id); /* restore current */
return h;
}
@ -477,7 +474,7 @@ void ReleaseD3DTexture(void *tex)
{
D3DTexture *TextureHandle = (D3DTexture *)tex;
glDeleteTextures(1, &(TextureHandle->id));
pglDeleteTextures(1, &(TextureHandle->id));
free(TextureHandle);
}
@ -500,34 +497,34 @@ void ThisFramesRenderingHasFinished()
void FlushD3DZBuffer()
{
glClear(GL_DEPTH_BUFFER_BIT);
pglClear(GL_DEPTH_BUFFER_BIT);
}
void SecondFlushD3DZBuffer()
{
FlushTriangleBuffers(0);
glClear(GL_DEPTH_BUFFER_BIT);
pglClear(GL_DEPTH_BUFFER_BIT);
}
void D3D_DecalSystem_Setup()
{
FlushTriangleBuffers(0);
glDepthMask(GL_FALSE);
pglDepthMask(GL_FALSE);
/* this does stop zfighting with bulletmarks on walls... */
glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(-8.0, -8.0);
pglEnable(GL_POLYGON_OFFSET_FILL);
pglPolygonOffset(-8.0, -8.0);
}
void D3D_DecalSystem_End()
{
FlushTriangleBuffers(0);
glDepthMask(GL_TRUE);
pglDepthMask(GL_TRUE);
glDisable(GL_POLYGON_OFFSET_FILL);
pglDisable(GL_POLYGON_OFFSET_FILL);
}
/* ** */
@ -542,7 +539,7 @@ void D3D_Rectangle(int x0, int y0, int x1, int y1, int r, int g, int b, int a)
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_GLOWING);
CheckBoundTextureIsCorrect(NULL);
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
x[0] = x0;
x[0] = (x[0] - ScreenDescriptorBlock.SDB_CentreX)/ScreenDescriptorBlock.SDB_CentreX;
@ -566,15 +563,15 @@ void D3D_Rectangle(int x0, int y0, int x1, int y1, int r, int g, int b, int a)
SelectPolygonBeginType(3); /* triangles */
glVertex3f(x[0], y[0], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[0], y[0], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[2], y[2], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[2], y[2], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glEnd();
pglEnd();
}
/* ** */
@ -1097,7 +1094,7 @@ void D3D_PlayerOnFireOverlay()
CheckBoundTextureIsCorrect(TextureHandle);
CheckFilteringModeIsCorrect(FILTERING_BILINEAR_ON);
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
u = (FastRandom()&255)/256.0f;
v = (FastRandom()&255)/256.0f;
@ -1121,21 +1118,21 @@ void D3D_PlayerOnFireOverlay()
SelectPolygonBeginType(3); /* triangles */
glTexCoord2f(s[0], t[0]);
glVertex3f(x[0], y[0], -1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], -1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], -1.0f);
pglTexCoord2f(s[0], t[0]);
pglVertex3f(x[0], y[0], -1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], -1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], -1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], -1.0f);
glTexCoord2f(s[2], t[2]);
glVertex3f(x[2], y[2], -1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], -1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], -1.0f);
pglTexCoord2f(s[2], t[2]);
pglVertex3f(x[2], y[2], -1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], -1.0f);
glEnd();
pglEnd();
}
void D3D_PlayerDamagedOverlay(int intensity)
@ -1174,7 +1171,7 @@ void D3D_PlayerDamagedOverlay(int intensity)
r = (colour >> 16) & 0xFF;
a = (colour >> 24) & 0xFF;
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_INVCOLOUR);
for (i = 0; i < 2; i++) {
@ -1202,21 +1199,21 @@ void D3D_PlayerDamagedOverlay(int intensity)
SelectPolygonBeginType(3); /* triangles */
glTexCoord2f(s[0], t[0]);
glVertex3f(x[0], y[0], -1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], -1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], -1.0f);
pglTexCoord2f(s[0], t[0]);
pglVertex3f(x[0], y[0], -1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], -1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], -1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], -1.0f);
glTexCoord2f(s[2], t[2]);
glVertex3f(x[2], y[2], -1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], -1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], -1.0f);
pglTexCoord2f(s[2], t[2]);
pglVertex3f(x[2], y[2], -1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], -1.0f);
glEnd();
pglEnd();
colour = baseColour + (intensity<<24);
@ -1225,7 +1222,7 @@ void D3D_PlayerDamagedOverlay(int intensity)
r = (colour >> 16) & 0xFF;
a = (colour >> 24) & 0xFF;
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_GLOWING);
}
@ -1249,7 +1246,7 @@ void DrawNoiseOverlay(int tr)
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_GLOWING);
CheckBoundTextureIsCorrect(tex);
CheckFilteringModeIsCorrect(FILTERING_BILINEAR_ON);
glDepthFunc(GL_ALWAYS);
pglDepthFunc(GL_ALWAYS);
u = FastRandom()&255;
v = FastRandom()&255;
@ -1272,25 +1269,25 @@ void DrawNoiseOverlay(int tr)
t[3] = (v + size) / 256.0f;
SelectPolygonBeginType(3); /* triangles */
glColor4ub(r, g, b, tr);
pglColor4ub(r, g, b, tr);
glTexCoord2f(s[0], t[0]);
glVertex3f(x[0], y[0], 1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], 1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], 1.0f);
pglTexCoord2f(s[0], t[0]);
pglVertex3f(x[0], y[0], 1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], 1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], 1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], 1.0f);
glTexCoord2f(s[2], t[2]);
glVertex3f(x[2], y[2], 1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], 1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], 1.0f);
pglTexCoord2f(s[2], t[2]);
pglVertex3f(x[2], y[2], 1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], 1.0f);
glEnd();
pglEnd();
glDepthFunc(GL_LEQUAL);
pglDepthFunc(GL_LEQUAL);
}
void D3D_ScreenInversionOverlay()
@ -1308,7 +1305,7 @@ void D3D_ScreenInversionOverlay()
CheckBoundTextureIsCorrect(tex);
CheckFilteringModeIsCorrect(FILTERING_BILINEAR_ON);
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
pglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
for (i = 0; i < 2; i++) {
GLfloat x[4], y[4], s[4], t[4];
@ -1335,21 +1332,21 @@ void D3D_ScreenInversionOverlay()
SelectPolygonBeginType(3); /* triangles */
glTexCoord2f(s[0], t[0]);
glVertex3f(x[0], y[0], 1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], 1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], 1.0f);
pglTexCoord2f(s[0], t[0]);
pglVertex3f(x[0], y[0], 1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], 1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], 1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], 1.0f);
glTexCoord2f(s[2], t[2]);
glVertex3f(x[2], y[2], 1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], 1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], 1.0f);
pglTexCoord2f(s[2], t[2]);
pglVertex3f(x[2], y[2], 1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], 1.0f);
glEnd();
pglEnd();
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_COLOUR);
}
@ -1359,22 +1356,22 @@ void D3D_PredatorScreenInversionOverlay()
{
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_DARKENINGCOLOUR);
CheckBoundTextureIsCorrect(NULL);
glDepthFunc(GL_ALWAYS);
pglDepthFunc(GL_ALWAYS);
SelectPolygonBeginType(3); /* triangles */
glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
pglColor4f(1.0f, 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
pglVertex3f(-1.0f, -1.0f, 1.0f);
pglVertex3f( 1.0f, -1.0f, 1.0f);
pglVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f( 1.0f, -1.0f, 1.0f);
glVertex3f( 1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
pglVertex3f( 1.0f, -1.0f, 1.0f);
pglVertex3f( 1.0f, 1.0f, 1.0f);
pglVertex3f(-1.0f, 1.0f, 1.0f);
glEnd();
pglEnd();
glDepthFunc(GL_LEQUAL);
pglDepthFunc(GL_LEQUAL);
}
void DrawScanlinesOverlay(float level)
@ -1390,7 +1387,7 @@ void DrawScanlinesOverlay(float level)
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_NORMAL);
CheckBoundTextureIsCorrect(tex);
CheckFilteringModeIsCorrect(FILTERING_BILINEAR_ON);
glDepthFunc(GL_ALWAYS);
pglDepthFunc(GL_ALWAYS);
c = 255;
a = 64.0f+level*64.0f;
@ -1398,7 +1395,7 @@ void DrawScanlinesOverlay(float level)
v = 128.0f;
size = 128.0f*(1.0f-level*0.8f);
glColor4ub(c, c, c, a);
pglColor4ub(c, c, c, a);
x[0] = -1.0f;
y[0] = -1.0f;
@ -1419,22 +1416,22 @@ void DrawScanlinesOverlay(float level)
SelectPolygonBeginType(3); /* triangles */
glTexCoord2f(s[0], t[0]);
glVertex3f(x[0], y[0], 1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], 1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], 1.0f);
pglTexCoord2f(s[0], t[0]);
pglVertex3f(x[0], y[0], 1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], 1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], 1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], 1.0f);
glTexCoord2f(s[2], t[2]);
glVertex3f(x[2], y[2], 1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], 1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], 1.0f);
pglTexCoord2f(s[2], t[2]);
pglVertex3f(x[2], y[2], 1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], 1.0f);
glEnd();
glDepthFunc(GL_LEQUAL);
pglEnd();
pglDepthFunc(GL_LEQUAL);
}
void D3D_FadeDownScreen(int brightness, int colour)
@ -1454,7 +1451,7 @@ void D3D_FadeDownScreen(int brightness, int colour)
r = (colour >> 16) & 0xFF;
a = (colour >> 24) & 0xFF;
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
x[0] = -1.0f;
y[0] = -1.0f;
@ -1467,15 +1464,15 @@ void D3D_FadeDownScreen(int brightness, int colour)
SelectPolygonBeginType(3); /* triangles */
glVertex3f(x[0], y[0], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[0], y[0], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[2], y[2], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[2], y[2], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glEnd();
pglEnd();
}
void D3D_HUD_Setup()
@ -1484,7 +1481,7 @@ void D3D_HUD_Setup()
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_GLOWING);
glDepthFunc(GL_LEQUAL);
pglDepthFunc(GL_LEQUAL);
}
void D3D_HUDQuad_Output(int imageNumber, struct VertexTag *quadVerticesPtr, unsigned int colour)
@ -1519,7 +1516,7 @@ void D3D_HUDQuad_Output(int imageNumber, struct VertexTag *quadVerticesPtr, unsi
r = (colour >> 16) & 0xFF;
a = (colour >> 24) & 0xFF;
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
for (i = 0; i < 4; i++) {
x[i] = quadVerticesPtr[i].X;
@ -1533,21 +1530,21 @@ void D3D_HUDQuad_Output(int imageNumber, struct VertexTag *quadVerticesPtr, unsi
SelectPolygonBeginType(3); /* triangles */
glTexCoord2f(s[0], t[0]);
glVertex3f(x[0], y[0], -1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], -1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], -1.0f);
pglTexCoord2f(s[0], t[0]);
pglVertex3f(x[0], y[0], -1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], -1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], -1.0f);
glTexCoord2f(s[1], t[1]);
glVertex3f(x[1], y[1], -1.0f);
glTexCoord2f(s[2], t[2]);
glVertex3f(x[2], y[2], -1.0f);
glTexCoord2f(s[3], t[3]);
glVertex3f(x[3], y[3], -1.0f);
pglTexCoord2f(s[1], t[1]);
pglVertex3f(x[1], y[1], -1.0f);
pglTexCoord2f(s[2], t[2]);
pglVertex3f(x[2], y[2], -1.0f);
pglTexCoord2f(s[3], t[3]);
pglVertex3f(x[3], y[3], -1.0f);
glEnd();
pglEnd();
}
void D3D_RenderHUDNumber_Centred(unsigned int number,int x,int y,int colour)
@ -2339,7 +2336,7 @@ void D3D_DrawColourBar(int yTop, int yBottom, int rScale, int gScale, int bScale
unsigned int c;
c = GammaValues[i];
glColor4ub(MUL_FIXED(c,rScale), MUL_FIXED(c,gScale), MUL_FIXED(c,bScale), 0);
pglColor4ub(MUL_FIXED(c,rScale), MUL_FIXED(c,gScale), MUL_FIXED(c,bScale), 0);
x[0] = (Global_VDB_Ptr->VDB_ClipRight*i)/255;
x[0] = (x[0] - ScreenDescriptorBlock.SDB_CentreX)/ScreenDescriptorBlock.SDB_CentreX;
@ -2353,7 +2350,7 @@ void D3D_DrawColourBar(int yTop, int yBottom, int rScale, int gScale, int bScale
i++;
c = GammaValues[i];
glColor4ub(MUL_FIXED(c,rScale), MUL_FIXED(c,gScale), MUL_FIXED(c,bScale), 0);
pglColor4ub(MUL_FIXED(c,rScale), MUL_FIXED(c,gScale), MUL_FIXED(c,bScale), 0);
x[2] = (Global_VDB_Ptr->VDB_ClipRight*i)/255;
x[2] = (x[2] - ScreenDescriptorBlock.SDB_CentreX)/ScreenDescriptorBlock.SDB_CentreX;
y[2] = yBottom;
@ -2365,16 +2362,16 @@ void D3D_DrawColourBar(int yTop, int yBottom, int rScale, int gScale, int bScale
y[3] = -(y[3] - ScreenDescriptorBlock.SDB_CentreY)/ScreenDescriptorBlock.SDB_CentreY;
glVertex3f(x[0], y[0], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[0], y[0], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[2], y[2], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[2], y[2], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
}
glEnd();
pglEnd();
}
void ColourFillBackBuffer(int FillColour)
@ -2386,9 +2383,9 @@ void ColourFillBackBuffer(int FillColour)
r = ((FillColour >> 16) & 0xFF) / 255.0f;
a = ((FillColour >> 24) & 0xFF) / 255.0f;
glClearColor(r, g, b, a);
pglClearColor(r, g, b, a);
glClear(GL_COLOR_BUFFER_BIT);
pglClear(GL_COLOR_BUFFER_BIT);
}
void ColourFillBackBufferQuad(int FillColour, int x0, int y0, int x1, int y1)
@ -2407,7 +2404,7 @@ void ColourFillBackBufferQuad(int FillColour, int x0, int y0, int x1, int y1)
r = ((FillColour >> 16) & 0xFF);
a = ((FillColour >> 24) & 0xFF);
glColor4ub(r, g, b, a);
pglColor4ub(r, g, b, a);
x[0] = x0;
x[0] = (x[0] - ScreenDescriptorBlock.SDB_CentreX)/ScreenDescriptorBlock.SDB_CentreX;
@ -2431,15 +2428,15 @@ void ColourFillBackBufferQuad(int FillColour, int x0, int y0, int x1, int y1)
SelectPolygonBeginType(3); /* triangles */
glVertex3f(x[0], y[0], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[0], y[0], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glVertex3f(x[1], y[1], -1.0f);
glVertex3f(x[2], y[2], -1.0f);
glVertex3f(x[3], y[3], -1.0f);
pglVertex3f(x[1], y[1], -1.0f);
pglVertex3f(x[2], y[2], -1.0f);
pglVertex3f(x[3], y[3], -1.0f);
glEnd();
pglEnd();
}
void D3D_DrawBackdrop()
@ -2509,30 +2506,30 @@ void BltImage(RECT *dest, DDSurface *image, RECT *src)
height = dest->bottom - dest->top + 1;
height1 = src->bottom - src->top + 1;
glPushAttrib(GL_COLOR_BUFFER_BIT | GL_PIXEL_MODE_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT);
glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
pglPushAttrib(GL_COLOR_BUFFER_BIT | GL_PIXEL_MODE_BIT | GL_DEPTH_BUFFER_BIT | GL_ENABLE_BIT);
pglPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
glDisable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
glDisable(GL_TEXTURE_2D);
pglDisable(GL_BLEND);
pglDisable(GL_DEPTH_TEST);
pglDisable(GL_TEXTURE_2D);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ROW_LENGTH, image->w);
glPixelZoom((double)width/(double)width1, (double)height/(double)height1);
pglPixelStorei(GL_UNPACK_ALIGNMENT, 1);
pglPixelStorei(GL_UNPACK_ROW_LENGTH, image->w);
pglPixelZoom((double)width/(double)width1, (double)height/(double)height1);
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
pglMatrixMode(GL_PROJECTION);
pglPushMatrix();
pglLoadIdentity();
glOrtho(0.0, ScreenDescriptorBlock.SDB_Width, 0.0, ScreenDescriptorBlock.SDB_Height, -1.0, 1.0);
glRasterPos2i(dest->left, ScreenDescriptorBlock.SDB_Height-dest->bottom);
pglOrtho(0.0, ScreenDescriptorBlock.SDB_Width, 0.0, ScreenDescriptorBlock.SDB_Height, -1.0, 1.0);
pglRasterPos2i(dest->left, ScreenDescriptorBlock.SDB_Height-dest->bottom);
glDrawPixels(width1, height1, GL_RGBA, GL_UNSIGNED_BYTE, image->buf);
pglDrawPixels(width1, height1, GL_RGBA, GL_UNSIGNED_BYTE, image->buf);
glPopMatrix();
pglPopMatrix();
glPopClientAttrib();
glPopAttrib();;
pglPopClientAttrib();
pglPopAttrib();;
}
/* ** */
@ -2696,7 +2693,7 @@ void PostLandscapeRendering()
// CheckTranslucencyModeIsCorrect(TRANSLUCENCY_NORMAL);
FlushTriangleBuffers(1);
glDepthMask(GL_FALSE);
pglDepthMask(GL_FALSE);
WaterFallBase = 109952;
@ -2709,7 +2706,7 @@ void PostLandscapeRendering()
// D3D_DrawWaterPatch(-100000, WaterFallBase, 538490);
FlushTriangleBuffers(1);
glDepthMask(GL_TRUE);
pglDepthMask(GL_TRUE);
}
if (drawStream)
{
@ -4881,7 +4878,7 @@ void D3D_DrawCable(VECTORCH *centrePtr, MATRIXCH *orientationPtr)
CurrTextureHandle = NULL;
CheckBoundTextureIsCorrect(NULL);
CheckTranslucencyModeIsCorrect(TRANSLUCENCY_GLOWING);
glDepthMask(GL_FALSE);
pglDepthMask(GL_FALSE);
MeshXScale = 4096/16;
MeshZScale = 4096/16;
@ -4967,5 +4964,5 @@ void D3D_DrawCable(VECTORCH *centrePtr, MATRIXCH *orientationPtr)
}
}
glDepthMask(GL_TRUE);
pglDepthMask(GL_TRUE);
}