Hi all -- I'm seeing some behavior that's very confusing. I'm hoping someone
here can help. I'm using GLEW 1.7.0, if it matters.
Vertex array objects were promoted to core functionality in OpenGL 3.0. My
OpenGL app opens a 3.1 context (verified with glGetString( GL_VERSION ) ), so
vertex array objects should be available.
However, GLEW doesn't appear to load the vertex array object feature entry
points. Calling into glGenVertexArrays(), for example, immediately crashes,
jumping through an invalid function pointer (0xcdcdcdcd, Visual Studio CRT
language for uninitialized memory).
Running glewinfo produces some output that I find rather odd: The vertex array
object entry points aren't listed in the GL_VERSION_3_0 section, where I would
expect to find them. They are listed only as extension entry points, under the
APPLE and ARB equivalent extensions.
It gets weirder: The glewinfo output (attached) shows that the
ARB_vertex_array_object extension is present, and I've verified this with GLView
(the OpenGL extension viewer). However, GLEW_ARB_vertex_array_object returns 0.
So, in code like this:
if( GLEW_ARB_vertex_array_object )
...the conditional always evaluates to false -- even though the extension is
present. This seems incorrect.
Next, I decided to query the entry point directly.
PFNGLGENVERTEXARRAYSPROC myGenVertexArrays( (PFNGLGENVERTEXARRAYSPROC)(
wglGetProcAddress( "glGenVertexArrays" ) ) );
myGenVertexArrays( 1, &_vaoID );
...and this code works fine! myGenVertexArrays() is a valid function pointer,
and calling into it does generate vertex array object IDs.
This all leaves me pretty stumped as to why the feature isn't available through
standard GLEW usage, either as core 3.0 functionality or as the ARB extension.
If this turns out to be a GLEW issue, I'm more than willing to help resolve it,
but I'm a little green with GLEW internals so I'll need some direction and guidance.
Can anyone help shed some light on this? Thanks,