更新 20180912 - 不要使用 GLEW。只是不值得麻烦...
我已经使用源代码安装了 GLEW:
制作 GLEW_DEST="$HOME/local" OPT="-march=core2 -O2" install.all
您的优化和目的地可能会有所不同。这会产生一个 libGLEW.a、libGLEWmx.a 和它们在$HOME/local/lib
. 该pkgconfig
子目录还将包括glew.pc
. GLEW 也不总是与其他人相处得很好。必须设置全局变量,例如glewExperimental
,以及需要注意包含其他标题的顺序:<OpenGL/gl3.h>
或<glfw.h>
等。
如果我能提供一些建议 - 忘记现代 GL 编程的 SDL。如果你想在 OS X 上进入纯粹的、现代的 GL。- 考虑类似:
#if defined (__APPLE_CC__)
#include <OpenGL/gl3.h>
#else
#include <GL/gl3.h> /* assert OpenGL 3.2 core profile available. */
#endif
#define GLFW_INCLUDE_GL3 /* don't drag in legacy GL headers. */
#define GLFW_NO_GLU /* don't drag in the old GLU lib - unless you must. */
#include <GL/glfw.h> /* simple and easy to use. omit legacy GL. */
安装 GLFW 也很简单:
> env PREFIX="$HOME/local" CFLAGS="-march=core2 -O2" 制作 cocoa cocoa-dist-install
同样,您的设置可能会有所不同。
20160412:正如其他人所指出的,我对 SDL 的评论已经过时。特别是如果您正在使用另一个引擎。我认为 glfw3 是在 OSX 上制作现代 OpenGL 应用程序的一种更简单的方法。它的代码编写和维护得非常好,(正确地!)专注于 GL 和事件处理。显然,从“引擎”的角度来看,SDL2 提供了可移植的扩展视频 API、音频 API、线程 API 等。尽管使用 C11 和 C++11,即使是线程 API 抽象层也可能是多余的。
GLEW 的问题在于如果没有大量用户干预就无法处理多个上下文。这对 OSX 来说不是问题,它提供了核心配置文件 API,并且不需要加载“功能点”。IIRC,X 上的 GL(DRI?)也有这个 - 但我可能错了。那里还有其他装载机。我仍在等待一个人来统治它们,这确保在必要时为多个上下文加载不同的函数指针,并使用线程本地(甚至是 pthread 键)进行正确调度,这可以从最新的 gl 生成.xml 来自 Khronos 或任何人......
20180912
我认为现在最简单的方法是使用 GLFW 提供上下文,并使用GLAD来解析 GL 函数指针。唯一的缺点是没有有效管理多个 GL 上下文。这就是 GLFW 目前在其演示中使用的……我现在完全忘记了 GLEW。