在OS X Mavericks上安装FreeGLUT

4

现在OS X可以使用OpenGL 4+,我想开始学习更现代化的OpenGL。我正在按照教程学习,它使用FreeGLUT作为窗口框架。尽管OS X有自己的GLUT版本,但已经过时,而且不支持现代OpenGL。要安装FreeGLUT,我首先安装了X11 2.7.4(以获取GL/glx.h)。然后我从FreeGLUT网站下载了tar ball... 版本是2.8.1。接下来我在终端中执行以下操作:

./configure  CFLAGS="-I/usr/X11/include/X11/extensions -L/usr/X11/lib" LIBS="-lXrandr -lXxf86vm -lXi" --with-x --x-includes=/usr/X11/include

据我所知,这个可行。然后我继续执行“make all”,结果出现了很多这样的错误:
clang: warning: argument unused during compilation: '-L/usr/X11/lib'
smooth_opengl3.c:131:1: error: unknown type name 'PFNGLGENBUFFERSPROC'
PFNGLGENBUFFERSPROC gl_GenBuffers;

我收到了无数这样的错误信息,所有的名称都附加了PFNGL。

接着我收到了一个致命错误,指出发出了太多错误,造成了制作过程的停止。

有没有使用OS X或OpenGL的用户知道如何解决这个问题?


那样做行不通。该教程是针对使用X11(可能是Linux或某个BSD变体)的操作系统编写的。OS X使用自己的窗口系统称为Quartz。在OS X上,您也不能在运行时加载扩展。而且您需要使用像“-framework OpenGL”这样的指令。该教程存在太多问题,我建议您查看基本的OS X教程以获取可工作的构建环境,然后尝试跟随您正在尝试实现的任何特殊内容。 - Andon M. Coleman
Andon M. Coleman - 严格来说,OS X 确实使用 Quartz 作为其本机窗口系统,但自上世纪80年代末的System 6.x中的 MacX 以来,Mac 就支持 X11。现在的 Mac OS X 的 X11 实现 - 或多或少 - 是 Quartz 的包装器。许多 *NIX/X11 程序已经被移植到了 X11。它们并不总是可以直接构建,但其中大部分都可以。 - Mike Crawford
4个回答

6
Lazyfoo的构建FreeGLUT(2.8.0)的指南在我这里也有用,但需要做一点修改:他们的指南中第4步(针对FreeGLUT 2.8.0)建议在一个FreeGLUT源文件的代码部分添加宏保护。然而,在FreeGLUT 2.8.1中,该源文件带有三个宏保护,分布于引用的代码段上。因此,我不得不删除第二和第三个(版本2.8.1提供的)宏保护才能使代码编译通过。希望这可以帮到您。

1

仅做澄清,所包含的GLUT版本实际上支持现代OpenGL。按照以下方式创建您的上下文:

glutInitDisplayMode(GLUT_3_2_CORE_PROFILE);

要获取OpenGL 4.1上下文。 我也按照这样的顺序对我的包含进行排序:

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

为了获得对较新的OpenGL功能的访问权限,并在使用不推荐使用的OpenGL函数时生成编译器错误。

要在命令行上构建,只需执行以下操作:

clang -framework OpenGL -framework GLUT

它的表现很好,不需要安装任何额外的库。

0
#include <stdio.h>
#include <stdlib.h>

#if defined(__APPLE__)
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif

这些是 b.c 的头文件

这是 make 文件 cc b.c -o b -framework GLUT -framework opengl -Wno-deprecated

使用 ./b 命令在 glut 中查看结果


0

抱歉回复晚了,但如果这仍然对您不起作用,我建议访问lazyfoo.net并转到OpenGL教程。第一个教程将指导您如何安装freeglut(虽然可能是旧版本,但在Windows上对我有效)。它也有Mac的步骤,但我无法告诉您它有多好。值得一试。此外,如果您正在寻找教程,我已经浏览了大部分,它们非常好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接