[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

Reply via email to