何时在 OS X 上使用 OpenGL 与 GL

Posted

技术标签:

【中文标题】何时在 OS X 上使用 OpenGL 与 GL【英文标题】:When to use OpenGL vs GL on OS X 【发布时间】:2017-05-30 18:27:17 【问题描述】:

在努力尝试编译后,我意识到需要更改一些代码:

#ifdef __APPLE__
#include "OpenGL/gl.h"
#include "OpenGL/glx.h"
#else 
...

需要改成:

#ifdef __APPLE__ 
#include "GL/gl.h"
#include "GL/glx.h"
#else
#...

安装 Quartz 后。但是,这也有效:

#ifdef __APPLE__ 
#include "OpenGL/gl.h"
#include "GL/glx.h"
#else
#...

但是OpenGL/glx.h 不存在。

OS X 上不同的标头位置是什么意思?为什么 OpenGL 文件有两个不同的位置?

【问题讨论】:

把它想象成一个目录结构(因为它是)。系统将在默认包含目录中查找(如果使用“”,则查找本地目录,以查找其中的任何内容。因此它们将扩展为 /OpenGL/gl.h 和 /GL/glx .h 我应该改写一下,谢谢你的回复。 【参考方案1】:

首先:您使用了错误的包含路径;我很惊讶这完全有效。你想要的是:

#include <OpenGL/gl.h>

注意使用尖括号代替引号和OpenGL的大写。

(您可能需要将 OpenGL 框架添加到您的项目中才能使其工作。如果您不使用 XCode,请将 -framework OpenGL 添加到您的编译器标志中。)

第二:不要在 Mac 应用程序中使用glx.h。 GLX 是 X11 窗口系统的扩展,提供对 GL 的支持——它主要用于使用 X11 作为其桌面界面的 UNIX/Linux 系统。 macOS 桌面界面不是基于 X11,因此您不需要 GLX。


路径说明:

macOS 上的 GL/ 路径指的是 X11 GL 标头,如果您安装了 XQuartz,则可能存在这些标头。它们不是你想要的。

OpenGL/ 指的是 OpenGL 框架。

【讨论】:

以上是关于何时在 OS X 上使用 OpenGL 与 GL的主要内容,如果未能解决你的问题,请参考以下文章

在 Mac OS X 上使用现代 OpenGL [关闭]

在 Mac OS X 上使用 CGL 设置 OpenGL 上下文

Haskell openGL 和 GLUT 在 Mac OS X 上冻结?我可以在 GLUT 上使用 GLFW 吗?

Mac OS X 上的 OpenGL 纹理损坏

在 Mac OS X 中编译使用 OpenGL 的 C 程序

OS X 上的 OpenGL 版本支持