【发布时间】:2015-01-30 18:14:25
【问题描述】:
我正在尝试从 2012 年中期开始在我的 Macbook Pro Retina 上运行一个需要 OpenGL 3.1 的程序,运行 OSX 10.10.1 和 NVIDIA GeForce GT 650M。我通过 Homebrew 安装 Glew 并运行 glewinfo 显示以下内容:
GL_VERSION_3_1: OK
---------------
glDrawArraysInstanced: OK
glDrawElementsInstanced: OK
glPrimitiveRestartIndex: OK
glTexBuffer: OK
但是,当我正在运行的代码中的 glewIsSupported("GL_VERSION_3_1") 行返回 false 时。我在网上搜索了一些关于 OSX 上的 X Server 仅支持 OpenGL 2.1 的内容,并认为这可能是问题所在。
所以我还下载了GLView,并注意到当我从 Core 切换到 Compatibility 时,OpenGL 版本从 4.1 下降到 2.1。我想这意味着glewIsSupported("GL_VERSION_3_1") 检查的是兼容性版本而不是核心。如果我将该检查更改为GL_VERSION_2_1,我的显卡或我的计算机是否有任何风险?有没有办法知道代码是否需要核心或兼容性?如果它确实需要 X Server,有没有办法让 X Server 使用 OpenGL 3.1?
[编辑:这些是标题。]
...
#include <GL/glew.h>
#ifdef __linux__
#include <pthread.h>
#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
#endif
#ifdef __APPLE__
#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
【问题讨论】:
-
不清楚在这个例子中你是否使用了 X 服务器。 XQuartz 确实将您限制为 OpenGL 2.1,但如果您使用的是 GLFW 之类的东西,它实际上位于平台本机窗口系统之上(它使用 NSOpenGL 而不是 GLX)。
-
你为什么在 Mac 上使用 GLEW?您不需要在 OSX 上加载扩展,这是在其他平台上使用 GLEW 的主要原因。
-
@AndonM.Coleman,我不知道代码是否需要 X Server。我希望有办法检查它是否需要它。
-
@RetoKoradi,当我运行
cmake时,它说它需要它,我在标题中看到它,我已将其添加到我的问题中。