I tried out the new glext.h and glext_proto.h headers.  Found a few
problems.

1. In glext_proto.h, glTexImage3D() has the wrong type for the internal
   format parameter.  It should be GLint, not GLenum.

2. In glext_proto.h the glCullParameter[fd]vEXT() functions are missing
   const qualifiers.

3. In glext_proto.h the token definitions are not protected with
   #ifndef GL_EXT_extension_name / #endif.  This isn't a problem
   with gcc, but I wouldn't be surprised if other compilers complain
   about redefines when both gl.h and glext_proto.h define some
   common symbols.

4. Being pedantic, I think all the prototypes in glext_proto.h should
   be prefixed with "extern".

5. Personally, I'd like to have the function prototypes in glext.h and
   then kill glext_proto.h.  The prototypes could be surrounded by a
   preprocessor symbol to enable/disable them.

#ifndef GL_EXT_blend_color
#define GL_EXT_blend_color 1
typedef void (APIENTRY * PFNGLBLENDCOLOREXTPROC) (GLclampf red, GLclampf green, 
GLclampf
blue, GLclampf alpha);
#ifdef GL_EXPORT_PROTOTYPES
extern void APIENTRY glBlendColorEXT (GLclampf, GLclampf, GLclampf, GLclampf);
#endif
#endif

   Normally, GL_EXPORT_PROTOTYPES would be undefined.  Implementations
   would #define GL_EXPORT_PROTOTYPES before including glext.h.


<rant>
We've really got to resolve the glext.h stuff NOW!  Another XFree86
release is coming up soon and by my measure, little, if anything, has
been accomplished since the XFree86 4.0 release.

I'm scheduled to submit the final batch of GL-related changes for
XFree86 4.0.1 this Friday.  If consensus on the issues isn't
reached within the next couple days, XFree86 will again ship with
GL headers that don't follow the Linux OpenGL base spec.

As with the XFree86 4.0 release, I'll simply make my best guess
on what might be agreed upon someday in the future and put that
in the release.
</rant>

-Brian

Reply via email to