summaryrefslogtreecommitdiff
path: root/src/oglfunc.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/oglfunc.c')
-rw-r--r--src/oglfunc.c189
1 files changed, 22 insertions, 167 deletions
diff --git a/src/oglfunc.c b/src/oglfunc.c
index c5ec48e..d1ada9a 100644
--- a/src/oglfunc.c
+++ b/src/oglfunc.c
@@ -6,20 +6,11 @@
#include "oglfunc.h"
PFNGLALPHAFUNCPROC pglAlphaFunc;
-PFNGLARRAYELEMENTPROC pglArrayElement;
-PFNGLBEGINPROC pglBegin;
PFNGLBINDTEXTUREPROC pglBindTexture;
PFNGLBLENDFUNCPROC pglBlendFunc;
PFNGLCLEARPROC pglClear;
PFNGLCLEARCOLORPROC pglClearColor;
-PFNGLCOLOR3FPROC pglColor3f;
-PFNGLCOLOR3FVPROC pglColor3fv;
-PFNGLCOLOR3UBPROC pglColor3ub;
-PFNGLCOLOR3UBVPROC pglColor3ubv;
PFNGLCOLOR4FPROC pglColor4f;
-PFNGLCOLOR4FVPROC pglColor4fv;
-PFNGLCOLOR4UBPROC pglColor4ub;
-PFNGLCOLOR4UBVPROC pglColor4ubv;
PFNGLCOLORPOINTERPROC pglColorPointer;
PFNGLCULLFACEPROC pglCullFace;
PFNGLDELETETEXTURESPROC pglDeleteTextures;
@@ -28,15 +19,10 @@ PFNGLDEPTHMASKPROC pglDepthMask;
PFNGLDEPTHRANGEPROC pglDepthRange;
PFNGLDISABLEPROC pglDisable;
PFNGLDISABLECLIENTSTATEPROC pglDisableClientState;
-PFNGLDRAWBUFFERPROC pglDrawBuffer;
PFNGLDRAWELEMENTSPROC pglDrawElements;
-PFNGLDRAWPIXELSPROC pglDrawPixels;
-PFNGLDRAWRANGEELEMENTSPROC pglDrawRangeElements;
PFNGLENABLEPROC pglEnable;
PFNGLENABLECLIENTSTATEPROC pglEnableClientState;
-PFNGLENDPROC pglEnd;
PFNGLFRONTFACEPROC pglFrontFace;
-PFNGLFRUSTUMPROC pglFrustum;
PFNGLGENTEXTURESPROC pglGenTextures;
PFNGLGETERRORPROC pglGetError;
PFNGLGETFLOATVPROC pglGetFloatv;
@@ -44,34 +30,10 @@ PFNGLGETINTEGERVPROC pglGetIntegerv;
PFNGLGETSTRINGPROC pglGetString;
PFNGLGETTEXPARAMETERFVPROC pglGetTexParameterfv;
PFNGLHINTPROC pglHint;
-PFNGLLOADIDENTITYPROC pglLoadIdentity;
-PFNGLLOADMATRIXFPROC pglLoadMatrixf;
-PFNGLMATRIXMODEPROC pglMatrixMode;
-PFNGLMULTMATRIXFPROC pglMultMatrixf;
-PFNGLNORMALPOINTERPROC pglNormalPointer;
-PFNGLORTHOPROC pglOrtho;
PFNGLPIXELSTOREIPROC pglPixelStorei;
-PFNGLPIXELZOOMPROC pglPixelZoom;
-PFNGLPOLYGONMODEPROC pglPolygonMode;
PFNGLPOLYGONOFFSETPROC pglPolygonOffset;
-PFNGLPOPATTRIBPROC pglPopAttrib;
-PFNGLPOPCLIENTATTRIBPROC pglPopClientAttrib;
-PFNGLPOPMATRIXPROC pglPopMatrix;
-PFNGLPUSHATTRIBPROC pglPushAttrib;
-PFNGLPUSHCLIENTATTRIBPROC pglPushClientAttrib;
-PFNGLPUSHMATRIXPROC pglPushMatrix;
-PFNGLRASTERPOS2IPROC pglRasterPos2i;
-PFNGLREADBUFFERPROC pglReadBuffer;
PFNGLREADPIXELSPROC pglReadPixels;
-PFNGLROTATEFPROC pglRotatef;
-PFNGLSCALEFPROC pglScalef;
PFNGLSHADEMODELPROC pglShadeModel;
-PFNGLTEXCOORD2FPROC pglTexCoord2f;
-PFNGLTEXCOORD2FVPROC pglTexCoord2fv;
-PFNGLTEXCOORD3FPROC pglTexCoord3f;
-PFNGLTEXCOORD3FVPROC pglTexCoord3fv;
-PFNGLTEXCOORD4FPROC pglTexCoord4f;
-PFNGLTEXCOORD4FVPROC pglTexCoord4fv;
PFNGLTEXCOORDPOINTERPROC pglTexCoordPointer;
PFNGLTEXENVFPROC pglTexEnvf;
PFNGLTEXENVFVPROC pglTexEnvfv;
@@ -80,50 +42,37 @@ PFNGLTEXIMAGE2DPROC pglTexImage2D;
PFNGLTEXPARAMETERFPROC pglTexParameterf;
PFNGLTEXPARAMETERIPROC pglTexParameteri;
PFNGLTEXSUBIMAGE2DPROC pglTexSubImage2D;
-PFNGLTRANSLATEFPROC pglTranslatef;
-PFNGLVERTEX2FPROC pglVertex2f;
-PFNGLVERTEX2FVPROC pglVertex2fv;
-PFNGLVERTEX3FPROC pglVertex3f;
-PFNGLVERTEX3FVPROC pglVertex3fv;
-PFNGLVERTEX4FPROC pglVertex4f;
-PFNGLVERTEX4FVPROC pglVertex4fv;
PFNGLVERTEXPOINTERPROC pglVertexPointer;
PFNGLVIEWPORTPROC pglViewport;
-// GL_EXT_paletted_texture
-PFNGLCOLORTABLEEXTPROC pglColorTableEXT;
-PFNGLGETCOLORTABLEPARAMETERIVEXTPROC pglGetColorTableParameterivEXT;
-
-// GL_EXT_secondary_color
-PFNGLSECONDARYCOLOR3FEXTPROC pglSecondaryColor3fEXT;
-PFNGLSECONDARYCOLOR3FVEXTPROC pglSecondaryColor3fvEXT;
-PFNGLSECONDARYCOLOR3UBEXTPROC pglSecondaryColor3ubEXT;
-PFNGLSECONDARYCOLOR3UBVEXTPROC pglSecondaryColor3ubvEXT;
-PFNGLSECONDARYCOLORPOINTEREXTPROC pglSecondaryColorPointerEXT;
-
int ogl_have_multisample_filter_hint;
-int ogl_have_paletted_texture;
-int ogl_have_secondary_color;
int ogl_have_texture_filter_anisotropic;
int ogl_use_multisample_filter_hint;
-int ogl_use_paletted_texture;
-int ogl_use_secondary_color;
int ogl_use_texture_filter_anisotropic;
static void dummyfunc()
{
}
-#define LoadOGLProc(type, func) \
-{ \
+#define LoadOGLProc_(type, func, name) { \
if (!mode) p##func = (type) dummyfunc; else \
- p##func = (type) SDL_GL_GetProcAddress(#func); \
+ p##func = (type) SDL_GL_GetProcAddress(#name); \
if (p##func == NULL) { \
if (!ogl_missing_func) ogl_missing_func = #func; \
} \
}
+#define LoadOGLProc(type, func) \
+ LoadOGLProc_(type, func, func)
+
+#define LoadOGLProc2(type, func1, func2) \
+ LoadOGLProc_(type, func1, func1); \
+ if (p##func1 == NULL) { \
+ ogl_missing_func = NULL; \
+ LoadOGLProc_(type, func1, func2); \
+ }
+
static int check_token(const char *string, const char *token)
{
const char *s = string;
@@ -152,37 +101,23 @@ void load_ogl_functions(int mode)
ogl_missing_func = NULL;
LoadOGLProc(PFNGLALPHAFUNCPROC, glAlphaFunc);
- LoadOGLProc(PFNGLARRAYELEMENTPROC, glArrayElement);
- LoadOGLProc(PFNGLBEGINPROC, glBegin);
LoadOGLProc(PFNGLBINDTEXTUREPROC, glBindTexture);
LoadOGLProc(PFNGLBLENDFUNCPROC, glBlendFunc);
LoadOGLProc(PFNGLCLEARPROC, glClear);
LoadOGLProc(PFNGLCLEARCOLORPROC, glClearColor);
- LoadOGLProc(PFNGLCOLOR3FPROC, glColor3f);
- LoadOGLProc(PFNGLCOLOR3FVPROC, glColor3fv);
- LoadOGLProc(PFNGLCOLOR3UBPROC, glColor3ub);
- LoadOGLProc(PFNGLCOLOR3UBVPROC, glColor3ubv);
LoadOGLProc(PFNGLCOLOR4FPROC, glColor4f);
- LoadOGLProc(PFNGLCOLOR4FVPROC, glColor4fv);
- LoadOGLProc(PFNGLCOLOR4UBPROC, glColor4ub);
- LoadOGLProc(PFNGLCOLOR4UBVPROC, glColor4ubv);
LoadOGLProc(PFNGLCOLORPOINTERPROC, glColorPointer);
LoadOGLProc(PFNGLCULLFACEPROC, glCullFace);
LoadOGLProc(PFNGLDELETETEXTURESPROC, glDeleteTextures);
LoadOGLProc(PFNGLDEPTHFUNCPROC, glDepthFunc);
LoadOGLProc(PFNGLDEPTHMASKPROC, glDepthMask);
- LoadOGLProc(PFNGLDEPTHRANGEPROC, glDepthRange);
+ LoadOGLProc2(PFNGLDEPTHRANGEPROC, glDepthRange, glDepthRangef);
LoadOGLProc(PFNGLDISABLEPROC, glDisable);
LoadOGLProc(PFNGLDISABLECLIENTSTATEPROC, glDisableClientState);
- LoadOGLProc(PFNGLDRAWBUFFERPROC, glDrawBuffer);
LoadOGLProc(PFNGLDRAWELEMENTSPROC, glDrawElements);
- LoadOGLProc(PFNGLDRAWPIXELSPROC, glDrawPixels);
- LoadOGLProc(PFNGLDRAWRANGEELEMENTSPROC, glDrawRangeElements);
LoadOGLProc(PFNGLENABLEPROC, glEnable);
LoadOGLProc(PFNGLENABLECLIENTSTATEPROC, glEnableClientState);
- LoadOGLProc(PFNGLENDPROC, glEnd);
LoadOGLProc(PFNGLFRONTFACEPROC, glFrontFace);
- LoadOGLProc(PFNGLFRUSTUMPROC, glFrustum);
LoadOGLProc(PFNGLGENTEXTURESPROC, glGenTextures);
LoadOGLProc(PFNGLGETERRORPROC, glGetError);
LoadOGLProc(PFNGLGETFLOATVPROC, glGetFloatv);
@@ -190,34 +125,10 @@ void load_ogl_functions(int mode)
LoadOGLProc(PFNGLGETSTRINGPROC, glGetString);
LoadOGLProc(PFNGLGETTEXPARAMETERFVPROC, glGetTexParameterfv);
LoadOGLProc(PFNGLHINTPROC, glHint);
- LoadOGLProc(PFNGLLOADIDENTITYPROC, glLoadIdentity);
- LoadOGLProc(PFNGLLOADMATRIXFPROC, glLoadMatrixf);
- LoadOGLProc(PFNGLMATRIXMODEPROC, glMatrixMode);
- LoadOGLProc(PFNGLMULTMATRIXFPROC, glMultMatrixf);
- LoadOGLProc(PFNGLNORMALPOINTERPROC, glNormalPointer);
- LoadOGLProc(PFNGLORTHOPROC, glOrtho);
LoadOGLProc(PFNGLPIXELSTOREIPROC, glPixelStorei);
- LoadOGLProc(PFNGLPIXELZOOMPROC, glPixelZoom);
- LoadOGLProc(PFNGLPOLYGONMODEPROC, glPolygonMode);
LoadOGLProc(PFNGLPOLYGONOFFSETPROC, glPolygonOffset);
- LoadOGLProc(PFNGLPOPATTRIBPROC, glPopAttrib);
- LoadOGLProc(PFNGLPOPCLIENTATTRIBPROC, glPopClientAttrib);
- LoadOGLProc(PFNGLPOPMATRIXPROC, glPopMatrix);
- LoadOGLProc(PFNGLPUSHATTRIBPROC, glPushAttrib);
- LoadOGLProc(PFNGLPUSHCLIENTATTRIBPROC, glPushClientAttrib);
- LoadOGLProc(PFNGLPUSHMATRIXPROC, glPushMatrix);
- LoadOGLProc(PFNGLRASTERPOS2IPROC, glRasterPos2i);
- LoadOGLProc(PFNGLREADBUFFERPROC, glReadBuffer);
LoadOGLProc(PFNGLREADPIXELSPROC, glReadPixels);
- LoadOGLProc(PFNGLROTATEFPROC, glRotatef);
- LoadOGLProc(PFNGLSCALEFPROC, glScalef);
LoadOGLProc(PFNGLSHADEMODELPROC, glShadeModel);
- LoadOGLProc(PFNGLTEXCOORD2FPROC, glTexCoord2f);
- LoadOGLProc(PFNGLTEXCOORD2FVPROC, glTexCoord2fv);
- LoadOGLProc(PFNGLTEXCOORD3FPROC, glTexCoord3f);
- LoadOGLProc(PFNGLTEXCOORD3FVPROC, glTexCoord3fv);
- LoadOGLProc(PFNGLTEXCOORD4FPROC, glTexCoord4f);
- LoadOGLProc(PFNGLTEXCOORD4FVPROC, glTexCoord4fv);
LoadOGLProc(PFNGLTEXCOORDPOINTERPROC, glTexCoordPointer);
LoadOGLProc(PFNGLTEXENVFPROC, glTexEnvf);
LoadOGLProc(PFNGLTEXENVFVPROC, glTexEnvfv);
@@ -226,23 +137,10 @@ void load_ogl_functions(int mode)
LoadOGLProc(PFNGLTEXPARAMETERFPROC, glTexParameterf);
LoadOGLProc(PFNGLTEXPARAMETERIPROC, glTexParameteri);
LoadOGLProc(PFNGLTEXSUBIMAGE2DPROC, glTexSubImage2D);
- LoadOGLProc(PFNGLTRANSLATEFPROC, glTranslatef);
- LoadOGLProc(PFNGLVERTEX2FPROC, glVertex2f);
- LoadOGLProc(PFNGLVERTEX2FVPROC, glVertex2fv);
- LoadOGLProc(PFNGLVERTEX3FPROC, glVertex3f);
- LoadOGLProc(PFNGLVERTEX3FVPROC, glVertex3fv);
- LoadOGLProc(PFNGLVERTEX4FPROC, glVertex4f);
- LoadOGLProc(PFNGLVERTEX4FVPROC, glVertex4fv);
LoadOGLProc(PFNGLVERTEXPOINTERPROC, glVertexPointer);
LoadOGLProc(PFNGLVIEWPORTPROC, glViewport);
if (!mode) {
- ogl_have_paletted_texture = 0;
- ogl_have_secondary_color = 0;
-
- ogl_use_paletted_texture = 0;
- ogl_use_secondary_color = 0;
-
return;
}
@@ -251,67 +149,24 @@ void load_ogl_functions(int mode)
exit(EXIT_FAILURE);
}
+#if !defined(NDEBUG)
+ printf("GL_VENDOR: %s\n", pglGetString(GL_VENDOR));
+ printf("GL_RENDERER: %s\n", pglGetString(GL_RENDERER));
+ printf("GL_VERSION: %s\n", pglGetString(GL_VERSION));
+ //printf("GL_SHADING_LANGUAGE_VERSION: %s\n", pglGetString(GL_SHADING_LANGUAGE_VERSION));
+ printf("GL_EXTENSIONS: %s\n", pglGetString(GL_EXTENSIONS));
+#endif
+
ext = (const char *) pglGetString(GL_EXTENSIONS);
ogl_have_multisample_filter_hint = check_token(ext, "GL_NV_multisample_filter_hint");
- ogl_have_paletted_texture = check_token(ext, "GL_EXT_paletted_texture");
- ogl_have_secondary_color = check_token(ext, "GL_EXT_secondary_color");
ogl_have_texture_filter_anisotropic = check_token(ext, "GL_EXT_texture_filter_anisotropic");
-#ifndef GL_COLOR_TABLE_WIDTH_EXT
-#define GL_COLOR_TABLE_WIDTH_EXT GL_COLOR_TABLE_WIDTH
-#endif
-
- if (ogl_have_paletted_texture) {
- ogl_missing_func = NULL;
-
- LoadOGLProc(PFNGLCOLORTABLEEXTPROC, glColorTableEXT);
- LoadOGLProc(PFNGLGETCOLORTABLEPARAMETERIVEXTPROC, glGetColorTableParameterivEXT);
-
- if (!ogl_missing_func) {
- GLint size;
-
- pglColorTableEXT(GL_PROXY_TEXTURE_2D, GL_RGBA, 256, GL_BGRA_EXT, GL_UNSIGNED_BYTE, NULL);
- pglGetColorTableParameterivEXT(GL_PROXY_TEXTURE_2D, GL_COLOR_TABLE_WIDTH_EXT, &size);
-
- if (size != 256) {
- ogl_have_paletted_texture = 0;
- }
- } else {
- ogl_have_paletted_texture = 0;
- }
- }
-
- if (ogl_have_secondary_color) {
- ogl_missing_func = NULL;
-
- LoadOGLProc(PFNGLSECONDARYCOLOR3FEXTPROC, glSecondaryColor3fEXT);
- LoadOGLProc(PFNGLSECONDARYCOLOR3FVEXTPROC, glSecondaryColor3fvEXT);
- LoadOGLProc(PFNGLSECONDARYCOLOR3UBEXTPROC, glSecondaryColor3ubEXT);
- LoadOGLProc(PFNGLSECONDARYCOLOR3UBVEXTPROC, glSecondaryColor3ubvEXT);
- LoadOGLProc(PFNGLSECONDARYCOLORPOINTEREXTPROC, glSecondaryColorPointerEXT);
-
- if (ogl_missing_func) {
- ogl_have_secondary_color = 0;
- }
- }
-
ogl_use_multisample_filter_hint = ogl_have_multisample_filter_hint;
- ogl_use_paletted_texture = ogl_have_paletted_texture;
- ogl_use_secondary_color = ogl_have_secondary_color;
ogl_use_texture_filter_anisotropic = ogl_have_texture_filter_anisotropic;
-
-#if 0
- fprintf(stderr, "RENDER DEBUG: pal:%d sec:%d mfh:%d tfa:%d\n",
- ogl_use_paletted_texture,
- ogl_use_secondary_color,
- ogl_use_multisample_filter_hint,
- ogl_use_texture_filter_anisotropic
- );
-#endif
}
-int check_for_errors(const char *file, int line)
+int check_for_errors_(const char *file, int line)
{
GLenum error;
int diderror = 0;