如何在 Mac OSX 上将我的 OpenGL 从 2.1 升级到 3.3?

Posted

技术标签:

【中文标题】如何在 Mac OSX 上将我的 OpenGL 从 2.1 升级到 3.3?【英文标题】:How do I upgrade my OpenGL from 2.1 to 3.3 on Mac OSX? 【发布时间】:2014-11-17 20:16:13 【问题描述】:

我正在尝试在我的 Macbook Pro 上用 C 语言编写 OpenGL 3。

我的显卡是NVIDIA GeForce 320M 256 MB,但是我有OpenGL 2.1 根据wikipedia,我应该可以使用OpenGL 3.3:

但是,当我运行 glxinfo | grep -i opengl 时,我得到了 OpenGL version string: 2.1 NVIDIA-8.24.16 310.90.9.05f01。 我该如何升级它?我正在经营小牛队。

【问题讨论】:

升级你的显卡驱动 @ratchetfreak:您无法在 OS X 上升级图形驱动程序(GL 版本与 OS 版本相关)。这里真正的大问题是正在使用glxinfo。 OS X 附带的(有点)GLX 服务器仅限于 GL 2.1。您必须使用本机 Cocoa 接口来创建核心配置文件上下文,而不是不推荐使用的 X 服务器。 【参考方案1】:

从技术上讲,您无法在 OS X 上仅使用 C 语言进行(窗口化)OpenGL 3.2 上下文编程。

您必须使用称为 NSOpenGL 的 Cocoa(一个 Objective-C 框架)的一部分; AGL(已弃用的基于 C 的 API)以及真正旧的 X 服务器实现 (XQuartz) 永远仅限于 OpenGL 2.1。

Apple 自己的 GLUT 实现封装了 NSOpenGL(FreeGLUT 没有),GLFW、SDL 等也是如此。它们有一小部分是用 Objective-C 编写的,用于与 NSOpenGL 接口,这允许它们创建基于窗口的 OpenGL 3.2+ 甚至在 C 软件中渲染上下文。


现在,这里的问题实际上是glxinfo 使用了不支持 OpenGL 3.2+ 的 XQuartz。如果您想了解有关 OpenGL 功能的详细信息,我建议您使用 Mac App Store 上的OpenGL Extension Viewer。

由于您刚刚开始在 OS X 上进行 OpenGL 开发,我还建议您查看 here 以快速了解各种 API。

【讨论】:

【参考方案2】:

您无法升级图形驱动程序,因为它们是由 Apple 提供的。但是您的系统应该支持 OpenGL 3.3 (https://developer.apple.com/opengl/capabilities/)。创建 OpenGL 上下文时,您必须请求 CoreProfile 模式。如果您使用 GLUT,可以通过以下方式完成:

GLUT on OS X with OpenGL 3.2 Core Profile

【讨论】:

以上是关于如何在 Mac OSX 上将我的 OpenGL 从 2.1 升级到 3.3?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Mac OSX 上将 Access 数据库与 Netbeans 连接?

在 OSX 上将卷挂载到 Docker 映像

在 Mac OSX 上将 unix 纪元时间转换为人类可读的日期 - BSD

Qt/C++ 在 Mac OSX 10 上将系统范围 QSettings 存储在哪里?

在 Mac osx 下将 OpenGL 链接到 Qt Creator

无法使用 GLEW (mac,c++) 在 openGL 中绘制任何内容