4

我在这里看到了一个类似的问题:OpenGL 4.1(?) under Mavericks,但似乎该人依赖于 glut,因此该解决方案不适用。

我在OSX 10.9 (Mavericks)上,使用NVidia GeForce 650,在C++中开发,使用GLEWGLFW

没有使用 xcode - 使用非常基本的 makefile 保持简单。

无论如何-我有这 5 行代码:

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

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

它打印出来

shader lang: 1.2

我假设设置 glewExperimental 应该正确处理获取核心上下文?(/另一个家伙在另一个线程中谈论的东西)

我还需要做什么才能启用最新的着色器版本?

Ps-我的完整代码在这里,包括 makefile:https ://github.com/Phildo/openglexp ,但我不确定它会有多大用处。

4

2 回答 2

8

我以前从未使用过 GLFW,但根据 API 文档和我对低级 OS X GL 上下文管理的全面经验,以下代码应该可以解决您的问题:

glfwInit       ();

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

确保你之前调用这些东西 glfwCreateWindow (...)

于 2013-11-14T05:14:38.150 回答
0

对于其他试图让它发挥作用的人 - 上述答案是正确的。您需要添加所有前面提到的 glfwWindowHints。但是,这并没有立即对我有用,直到我在调用 glfwInit() 之后和 glfwCreateWindow() 之前移动了提示。谢谢大家的帮助。

于 2015-05-16T23:25:51.337 回答