I've updated the ABI project specification at
http://oss.sgi.com/projects/ogl-sample/ABI/
as well as the glext.h/glxext.h/wglext.h linked to from there.
Hopefully they're now synced up with recent decisions by the group.
Please review the spec, try out the headers, and report problems -
except for bugfixes, we should be basically done now.
In response to various issues/questions raised last week:
- Steve asked whether there was a GL_GLEXT_VERSION token. Yes,
although it was named GL_GLEXT_VERSION_EXT until just now, in
response to Allen's observation that we were defacto carving out a
GLEXT namespace. Note this versions glext.h, not the ABI. For
consistency's sake, glxext.h and wglext.h have been updated to
define GLX_GLXEXT_VERSION and WGL_WGLEXT_VERSION.
- glext.h is specified to be included by default from gl.h, likewise
glxext.h from glx.h.
- We voted (in the noncontroversial portion of the original vote)
to:
> Vote #1 (vote YES or NO): Add a preprocessor define specifying that
> the oglbase compiletime environment exists and specifying the
> oglbase version implemented. The symbol is GL_OGLBASE_VERSION.
> If defined, its value is (1000*major_version+minor_version).
This should be defined in gl.h, and is the oglbase version number
(e.g. it will be '1000' once we finalize). Thus, per option C, gl.h
should contain a fragment something something like this:
#ifndef GL_GLEXT_LEGACY
#define GL_OGLBASE_VERSION <version #>
#include <GL/glext.h>
#endif
Likewise for glx.h, GLX_GLXEXT_LEGACY, and glxext.h. The current
draft of the proposal is not completely consistent on GL_GLEXT vs.
GLX_GLXEXT. I incline that having separate symbols is a good idea
from a flexibility and namespace-pureness standpoint but it gets
wordy and perhaps hard for ISVs to remember. OTOH they are not going
to be defining either symbol very often, if we succeed in
standardizing the ABI.
- With this scheme, apps can either do:
#define GL_GLEXT_LEGACY /* or -DGL_GLEXT_LEGACY in Makefile */
#include <GL/gl.h>
<traditional stuff>
or
#include <GL/gl.h>
#ifdef GL_OGLBASE_VERSION
<oglbase specific stuff>
#else
<traditional stuff?>
#endif
- glext.h now includes both prototypes and typedefs. By default,
prototypes are conditionally compiled out. They can be enabled by
#defining GL_GLEXT_PROTOTYPES before #including <GL/gl.h>. Likewise
for glxext.h (here's where the schiziness enters in - should
probably use GLX_GLXEXT_PROTOTYPES).
- Fixed MAX_ACTIVE_TEXTURES_ARB -> MAX_TEXTURE_UNITS_ARB per Brian,
CYGWIN32 -> CYGWIN per Suhaib.
- ABI specification updated to version 0.9.8.
- A few more extension specifications added to the registry.
Jon Leech
SGI