为啥在我安装 Mountain Lion 时 OpenGL 会降级?
Posted
技术标签:
【中文标题】为啥在我安装 Mountain Lion 时 OpenGL 会降级?【英文标题】:Why was OpenGl downgraded when I installed Mountain Lion?为什么在我安装 Mountain Lion 时 OpenGL 会降级? 【发布时间】:2013-01-20 21:21:43 【问题描述】:编辑:已解决。这是一个 GLFW 问题,与 Mountain Lion 或 OpenGL 无关。
我之前在我的 2009 Macbook Pro 上使用过 Lion。在 XCode 中,以下操作没有问题:
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MAJOR, 3);
glfwOpenWindowHint(GLFW_OPENGL_VERSION_MINOR, 2);
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwOpenWindowHint(GLFW_WINDOW_NO_RESIZE, GL_TRUE);
glfwOpenWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
ALLEGE(glfwOpenWindow(SCREEN_SIZE.x, SCREEN_SIZE.y, 8, 8, 8, 8, 0, 0, GLFW_WINDOW) != GL_FALSE); // msg = "glfwOpenWindow failed. Can your hardware handle OpenGL 3.2?"
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d\n", major, minor, rev);
然后打印OpenGL version received: 3.2
。在我升级到 Mountain Lion 之后,上面的代码将无法工作(挂断在 ALLEGE 上,因为 glfwOpenWindow 返回 false)。去除所有 GLFW 窗口提示,例如:
ALLEGE(glfwOpenWindow(SCREEN_SIZE.x, SCREEN_SIZE.y, 8, 8, 8, 8, 0, 0, GLFW_WINDOW) != GL_FALSE); // msg = "glfwOpenWindow failed. Can your hardware handle OpenGL 3.2?"
int major, minor, rev;
glfwGetGLVersion(&major, &minor, &rev);
fprintf(stderr, "OpenGL version recieved: %d.%d.%d\n", major, minor, rev);
允许操作系统选择要使用的 OpenGL 版本。上面的代码可以编译运行,但是会在控制台打印OpenGL version received: 2.1
。
我说,“wft?”并查看系统信息应用程序以获取更多信息。框架部分告诉我,我拥有的 OpenGL 框架是 1.8.6。
现在,如果我的 OpenGL 框架确实被降级了,我会感到各种困惑和不安。我知道没有办法手动升级我的框架。 谁能帮助我了解发生了什么?
Edit1:使用 OpenGL 扩展 Viewer.app 通知我我的 OpenGL 版本是 2.1 NVIDIA-8.0.61
Edit2: 问题似乎与我的项目没有使用正确的配置文件(兼容性而不是核心)有关,但是当我使用 glfw 的提示来指定核心时,例如
glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
随后对glfwOpenWindow()
的调用失败。我不知道如何诊断这个问题,因为 glGetError 直到窗口成功打开后才会起作用。
【问题讨论】:
Mountain Lion 没有降级 OpenGL。这很可能是 glfw 在错误位置查找版本的问题。 另请参阅related question,了解如何使用 glfw 查看 OpenGL 3.2 功能。 感谢@KurtRevis,但相关问题存在未指定使用哪个 OpenGL 配置文件的问题。我在上面使用的行 `glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);` 记录在 here 以包含核心配置文件。此方法在 Lion 上成功,但现在失败。由于访问不正确,我无法使用 glGetError() 诊断问题(我假设 OpenWindow 失败时未创建上下文)。 【参考方案1】:从源代码重新编译 GLFW 并将其与静态链接一起使用只能解决我的问题。一些内部错误导致glfwOpenWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
无法正常工作。
【讨论】:
以上是关于为啥在我安装 Mountain Lion 时 OpenGL 会降级?的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV可以安装在Mac Mountain Lion上的python virtualenv中吗
在 Mountain Lion 上使用 Homebrew 安装 mcrypt 支持 php54 的问题
在 Mountain Lion 上运行 4.3 版的 iOS 应用程序