我正在编写一个 mac 应用程序,它使用带有旧配置文件的 OpenGL 在 NSOpenGLView 上绘制它的一些 UI。
我的应用程序面向 OS X 10.7 及更高版本。
如果我迁移到 OpenGL 3.2,它会阻止一些使用 Lion 的用户运行它,还是每台使用 Lion 的 Mac 都支持 OpenGL 3.2?
OSX 有一个软件后备渲染器,当硬件中没有 OpenGL 功能时,它会自动使用。每台运行 Lion 的 OSX 机器都通过此软件后备渲染器支持完整的 OpenGL 3.2 Core 规范。如果您请求硬件中不可用的功能,那么 OpenGL 框架将默默地退回到图形管道的该阶段的软件渲染。
这意味着每台运行 Lion 的 Mac 都将运行您的 OpenGL 3.2 应用程序,无论硬件如何。您不会收到运行时错误,但您可能会或可能不会获得可接受的性能——这取决于 GPU 在硬件中支持的功能以及渲染任务的复杂程度。
OS X 10.7 的 SDK 包括 OpenGL 3.2 的核心配置文件,但实际的运行时支持需要存在兼容 OpenGL 3.2 的 GPU 和驱动程序。
OpenGL 3.2 于 2008 年发布,OS X 10.7 Lion 支持可追溯到 2006 年的某些 Mac 机型。2006 年末的 Core 2 Duo MacBook Pro 运行 Lion 并具有 ATI Mobility Radeon X1600,它是一个 OpenGL 2.0 GPU。
通过该示例可以看出,能够运行 10.7 Lion 的计算机集是能够运行 OpenGL 3.2 程序的计算机集的超集。
请注意,我既不是 Mac 专家也不是 OpenGL 程序员,我不知道 OpenGL 向后兼容的程度。我想针对 OpenGL 3.2 库进行编译很好,但是如果您尝试使用任何硬件加速 3.2 功能,那么您会遇到运行时错误。但是,您应该在使用之前测试某个功能是否受支持,因此您的程序应该可以在较旧的 Mac 上正常运行,前提是您进行了一些小的修改。
那里的答案是正确的,如果您禁用软件渲染器后备选项,该选项可用于每台运行 Lion 但不是硬件加速的 Mac。
以下是不同 GPU 和系统软件渲染器支持的 OpenGL 功能的详细列表:https ://developer.apple.com/graphicsimaging/opengl/capabilities/GLInfo_1075_Core.html