Question

I saw a similar question here: OpenGL 4.1(?) under Mavericks, but it seems that person is relying on glut, so the solution doesn't apply.

I'm on OSX 10.9 (Mavericks), with an NVidia GeForce 650, developing in C++, using GLEW and GLFW.

I'm not using xcode- keeping it simple with a very basic makefile.

Anyways- I have these 5 lines of code:

window = glfwCreateWindow(640,480,"hello world",NULL,NULL);
glfwMakeContextCurrent(window);
glewExperimental = GL_TRUE;
glewInit();

printf("shader lang: %s\n",glGetString(GL_SHADING_LANGUAGE_VERSION));

and it prints out

shader lang: 1.2

I'm assuming setting glewExperimental should handle correctly getting the core context? (/ the stuff the other dude was talking about in the other thread)

What else do I need to do to enable the latest shader versions?

Ps- my full code is here, including the makefile: https://github.com/Phildo/openglexp , but I'm not sure how useful it will be.

Was it helpful?

Solution

I have never used GLFW before, but according to the API documentation and my thorough experience with low-level OS X GL context management, the following code should fix your problem:

glfwInit       ();

glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint (GLFW_OPENGL_PROFILE,        GLFW_OPENGL_CORE_PROFILE);

Make sure you call these things before glfwCreateWindow (...)

OTHER TIPS

For anyone else trying to get this to work - the above answers are correct. You need to add all of the aforementioned glfwWindowHints. However, this didn't immediately work for me UNTIL I moved the hints AFTER the call to glfwInit() and BEFORE glfwCreateWindow(). Thanks all for the help.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top