Recently, I removed GLEW from my engine and implemented my own GL function loader. Well, I never really cared about it.
During the refactoring step, I came to download the glcorearb.h file from the gl website and I was not so amused to see what functions became core 4.0.
First of all, I just thought, OpenGL 4.0 is an API for “new” generation hardware. You know, when it started with hw tesselation and stuff. Anyway. Seeing the Transform Feedback function in the GL_VERSION_4_0 section of glcorearb.h somehow breaks my heart.
I really commited to OpenGL 3.1-3.3 API features, because I wanted to port to OpenGL ES 3 soon and I thought that would be like a dream if using OpenGL 3.3 core features. I also really need Transform Feedback, because this is a super nice(and only) OpenGL 3.1+ feature(in my thoughts) that allows you to do GPU only computation. I.e. not being required to go though the CPU.
But what does it mean to see those TF functions in the GL_VERSION_4_0? Well I tried the following:
When I create a GL 3.1, 3.2 or 3.3 context with core profile, the nvidia driver actually supports the TF functions, but it does not support all of the function listed in the GL_VERSION_4_0 section of glcorearb.h file. This is important to me! With an 3.1, 3.2 or 3.3 core profile context, I can actually load the TF functions! With support, I mean wglGetProcAddress is able to load the function.
Now. Creating a 4.0 core profile context, ALL function of the GL_VERSION_4_0 can be loaded!
So whats going on? Being able to load functions listed under GL_VERSION_4_0 in glcorearb.h with a GL 3.1, 3.2 or 3.3 core context?
By any chance, could someone please enlighten me?