I just noticed by removing the following attribute from the call to wglCreateContextAttribs:
WGL_CONTEXT_FLAGS_ARB, WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB
I get all extensions now. That’s very odd. Any ideas? Also, if I keep these flags in, when I attempt to render geometry using VBOs nothing gets rendered. But in a 2.0 context or by commenting out the flags above, geometry is rendered.
Here’s the code.
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
float colors[] = {
1.0f, 0.0f, 0.0f,
0.0f, 1.0f, 0.0f,
0.0f, 0.0f, 1.0f
};
float vertices[] = {
0.0f, 0.0f,
100.0f, 0.0f,
100.0f, 100.0f
};
unsigned int indices[] = {
0, 1, 2
};
static GLuint vao = 0;
static GLuint cbo = 0, vbo = 0;
if (!cbo && !vbo) {
if (!GLEW_ARB_vertex_buffer_object)
printf("vertex_buffer_object not supported
");
/*glGenVertexArrays(1, &vao);
glBindVertexArray(vao);*/
glGenBuffersARB(1, &cbo);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, cbo);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(colors), colors, GL_STATIC_DRAW_ARB);
glGenBuffersARB(1, &vbo);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, sizeof(vertices), vertices, GL_STATIC_DRAW_ARB);
}
glEnableClientState(GL_COLOR_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, cbo);
glColorPointer(3, GL_FLOAT, 0, 0);
glEnableClientState(GL_VERTEX_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo);
glVertexPointer(2, GL_FLOAT, 0, 0);
//glBindVertexArray(vao);
//glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, indices);
glDrawArrays(GL_TRIANGLES, 0, 3);
gltSwapBuffers();
}
Thanks, I didn’t know that about glGetString being deprecated. But I still get null for each call to glGetStringi 
And yes, I am adding the forward compatible context attribute to my list of attribs when calling the CreateContextAttribs method.