何时在 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 文件有两个不同的位置?
【问题讨论】:
把它想象成一个目录结构(因为它是)。系统将在默认包含目录中查找(如果使用“”,则查找本地目录,以查找其中的任何内容。因此它们将扩展为首先:您使用了错误的包含路径;我很惊讶这完全有效。你想要的是:
#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 上使用 CGL 设置 OpenGL 上下文
Haskell openGL 和 GLUT 在 Mac OS X 上冻结?我可以在 GLUT 上使用 GLFW 吗?