[Er, oops. The last one had the patch but not the text. Apologies!] OK, looking more carefully, I think I see how this is supposed to work. Because not all OpenGL implementations export the PointParameter functions, Curt is using function pointers and the GetProcAddress stuff.
This is fine; the only bug is that the names of the function pointers are identical to the names of the functions. This is attractive, because you can use the same syntax for both. But it doesn't work across all implementations. In some, the definition of the functions are as "regular" functions, not pointers. So while the invocation syntax is the same, the assignment syntax is not. You can't redeclare a regular function as a function pointer -- they're not compatible types. The following patch just renames the symbol used to avoid the collision. It seems to work for me. Andy diff -u -w -r1.31 main.cxx --- main.cxx 17 Oct 2002 04:34:32 -0000 1.31 +++ main.cxx 19 Oct 2002 18:38:22 -0000 @@ -141,16 +141,16 @@ typedef void (APIENTRY * PFNGLPOINTPARAMETERFVEXTPROC)(GLenum pname, const GLfloat *params); - PFNGLPOINTPARAMETERFEXTPROC glPointParameterfEXT = 0; - PFNGLPOINTPARAMETERFVEXTPROC glPointParameterfvEXT = 0; + PFNGLPOINTPARAMETERFEXTPROC gl_PointParameterfEXT = 0; + PFNGLPOINTPARAMETERFVEXTPROC g_lPointParameterfvEXT = 0; #elif linux #include <GL/glx.h> typedef void (* OpenGLFuncExt)(GLenum pname, GLfloat param); typedef void (* OpenGLFuncExtv)(GLenum pname, const GLfloat *params); - OpenGLFuncExt glPointParameterfEXT = 0; - OpenGLFuncExtv glPointParameterfvEXT = 0; + OpenGLFuncExt gl_PointParameterfEXT = 0; + OpenGLFuncExtv gl_PointParameterfvEXT = 0; #endif float default_attenuation[3] = {1.0, 0.0, 0.0}; @@ -743,8 +743,8 @@ glEnable(GL_POINT_SMOOTH); float quadratic[3] = {1.0, 0.001, 0.0000001}; // makes the points fade as they move away - glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, quadratic); - glPointParameterfEXT(GL_POINT_SIZE_MIN_EXT, 1.0); + gl_PointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, quadratic); + gl_PointParameterfEXT(GL_POINT_SIZE_MIN_EXT, 1.0); glPointSize(4.0); } @@ -774,7 +774,7 @@ #ifdef FG_EXPERIMENTAL_LIGHTING if (glutExtensionSupported("GL_EXT_point_parameters")) { - glPointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, + gl_PointParameterfvEXT(GL_DISTANCE_ATTENUATION_EXT, default_attenuation); } @@ -1578,14 +1578,14 @@ #ifdef FG_EXPERIMENTAL_LIGHTING // get the address of our OpenGL extensions # ifdef WIN32 - glPointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC) + gl_PointParameterfEXT = (PFNGLPOINTPARAMETERFEXTPROC) wglGetProcAddress("glPointParameterfEXT"); - glPointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC) + gl_PointParameterfvEXT = (PFNGLPOINTPARAMETERFVEXTPROC) wglGetProcAddress("glPointParameterfvEXT"); # elif linux - glPointParameterfEXT = (OpenGLFuncExt) + gl_PointParameterfEXT = (OpenGLFuncExt) glXGetProcAddressARB((GLubyte *)"glPointParameterfEXT"); - glPointParameterfvEXT = (OpenGLFuncExtv) + gl_PointParameterfvEXT = (OpenGLFuncExtv) glXGetProcAddressARB((GLubyte *)"glPointParameterfvEXT"); # endif #endif -- Andrew J. Ross NextBus Information Systems Senior Software Engineer Emeryville, CA [EMAIL PROTECTED] http://www.nextbus.com "Men go crazy in conflagrations. They only get better one by one." - Sting (misquoted) _______________________________________________ Flightgear-devel mailing list [EMAIL PROTECTED] http://mail.flightgear.org/mailman/listinfo/flightgear-devel