From 0de664d0a886bcda45a0cd05551b6896c5c46ed0 Mon Sep 17 00:00:00 2001 From: Steven Fuller Date: Sat, 14 Feb 2015 12:00:00 +0100 Subject: Import icculus.org release (2015-02-14) --- src/oglfunc.c | 189 +++++++--------------------------------------------------- 1 file changed, 22 insertions(+), 167 deletions(-) (limited to 'src/oglfunc.c') 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; -- cgit v1.3