Extensions to promote to ARB/core

Yeah that’s clear but there is no
GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT
defined in gl3.h.

Of course it doesn’t. Because gl3.h contains what is in GL 3.x core. Just like gl.h has what’s in GL 1.1 core. For extensions (because they’re not core), you just include glext.h, which has all of the extensions.

something like “gl3ext.h”
similiar to the old glext.h.

And how would this header be different from glext.h?

In contrast to glext.h the “gl3ext.h” would not contain
deprecated stuff like glUseProgramObjectARB which
was renamed to glUseProgram in OpenGL 2.0.

Or more general “gl3ext.h” should only include REAL
extensions to OpenGL 3.X core and not extensions
which are already core since 2.X like in my
example above.

Please correct me but the gl3.h was introduced to get rid
of all the deprecated stuff, right? Including the glext.h
would somehow ruin this good attempt.

In contrast to glext.h the “gl3ext.h” would not contain
deprecated stuff like glUseProgramObjectARB which
was renamed to glUseProgram in OpenGL 2.0.

“Deprecated” does not mean “removed”. It means that it may be removed in the future. For example, glVertex was deprecated in GL 3.0, but it was still available for use in 3.0. It was still part of the 3.0 specification. It was not removed until 3.1.

Second, no extension has been deprecated or removed. Extensions are purely optional, with availability explicitly advertised by the GL implementation. If your extension advertises the GL_ARB_shader_objects extension, then glUseProgramObjectARB had better be defined. And since there is code out there that relies on the shader objects extension, it’s going to be around for a while.

Or more general “gl3ext.h” should only include REAL
extensions to OpenGL 3.X core and not extensions
which are already core since 2.X like in my
example above.

Who defines what constitutes “real extensions?” If you need such a header so badly, come up with your own definition and generate the header file yourself from the .spec files.

Extensions which are already core since 2.0 should not be
part of a “gl3ext.h” header file because they do not extend
OpenGL 3.X’s functionality. Anyway since this file does
not exist and my sight seems to be wrong I’ll continue to
define stuff like GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT myself.

Cheers

What’s so hard about including glext.h? After all, that’s what it’s there for!

What you do is just bad practice that should be discouraged.

Hey guys, just a small tip… The most current versions of glext.h exclude many former-core-now-deprecated entry points and enums if you define these preprocessor symbols:

#define GL_VERSION_1_2_DEPRECATED 1
#define GL_VERSION_1_3_DEPRECATED 1
#define GL_VERSION_1_4_DEPRECATED 1
#define GL_VERSION_1_5_DEPRECATED 1
#define GL_VERSION_2_0_DEPRECATED 1
#define GL_VERSION_2_1_DEPRECATED 1
#define GL_VERSION_3_0_DEPRECATED 1

#define GL_ARB_imaging_DEPRECATED 1
#define GL_ARB_framebuffer_object_DEPRECATED 1 

Just define them before you include glext.h