OSX 10.8上的GL_PRIMITIVE_RESTART

时间:2014-06-02 04:45:13

标签: macos opengl glut

我在OSX上使用OpenGL 3.2和GLUT,并在命令行上进行编译,如下所示:

gcc test.c -framework OpenGL -framework GLUT

在我的源文件的顶部,我手动包含两个标题:

#include <OpenGL/OpenGL.h>
#include <GLUT/GLUT.h>
到目前为止,一切都很好,花花公子。但今天我注意到使用GL_PRIMITIVE_RESTART给了我一个未声明的标识符错误......

我需要包含其他标头还是其他框架?或者苹果公司在实施OpenGL 3.2时不支持GL_PRIMITIVE_RESTART吗?

1 个答案:

答案 0 :(得分:1)

您不是直接包含任何OpenGL标头。 <OpenGL/OpenGL.h>可能听起来像是OpenGL标题,但它实际上包含CGL的定义。

您间接获得OpenGL标头,因为<GLUT/GLUT.h>包含<OpenGL/gl.h>。不幸的是,这是GL3之前的头文件,这就是为什么你没有GL3级别定义。

您想要的标头是<OpenGL/gl3.h>。您可以自己添加,但很可能会看到一些警告,因为<GLUT/glut.h>仍然会包含旧标头,并且它会指出可能的冲突。我找到的最好的是使用这样的包含序列:

#include <OpenGL/gl3.h>
#define __gl_h_
#include <GLUT/glut.h>

#define对应<OpenGL/gl.h>中的标题保护,并阻止其被包含。

Apple正在弃用GLUT。您必须在OS X 10.9中禁用其他警告,以防止它抱怨使用GLUT。它也不支持创建比GL 3.2更新的上下文。