4

现在 OS X 可以使用 OpenGL 4+,我想开始学习更现代的 OpenGL。我正在关注的教程使用 FreeGLUT 作为窗口框架。虽然 OS X 有 Apple 自己对 GLUT 的改编,但它已经过时并且不能与现代 OpenGL 一起使用。为了安装 FreeGLUT,我首先安装了 X11 2.7.4(以获得 GL/glx.h)。然后我从 FreeGLUT 网站下载了 FreeGLUT 的 tar 球... 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

据我所知,这很有效。我开始做所有事情,并得到了其中的许多:

clang: warning: argument unused during compilation: '-L/usr/X11/lib'
smooth_opengl3.c:131:1: error: unknown type name 'PFNGLGENBUFFERSPROC'
PFNGLGENBUFFERSPROC gl_GenBuffers;

我收到了无数这样的错误;这些名称都附加了 PFNGL。

然后我收到了一个致命错误,指出发出了太多错误,并且 make 将被停止。

任何知道如何解决此问题的 OS X 或 OpenGL 用户?

4

4 回答 4

6

Lazyfoo 的在 OSX 上构建 FreeGLUT (2.8.0) 的指南也对我有用 - 有一个修改:他们指南的第 4 步(适用于 FreeGLUT 2.8.0)建议在FreeGLUT 源文件。然而,FreeGLUT 2.8.1 中的源文件带有三个宏保护,分布在引用的代码部分。我没有添加 Lazyfoo 的宏保护,而是删除了第 2 和第 3 个宏保护(版本 2.8.1 附带)才能编译代码。希望这可以帮助。

于 2014-03-12T10:33:12.187 回答
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

它工作得很好,不需要安装任何额外的库。

于 2015-11-03T21:27:13.017 回答
0
#include <stdio.h>
#include <stdlib.h>

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

这些是 bc 的标题

这是制作文件 cc bc -ob -framework GLUT -framework opengl -Wno-deprecated

./b 查看结果

于 2014-07-31T12:37:18.017 回答
0

很抱歉回答迟了,但如果这仍然不适合您,我建议您访问lazyfoo.net 并转到 OpenGL 教程。第一个将引导您完成如何安装 freeglut(尽管它可能是在 Windows 上为我工作的旧版本)。它也有一个mac演练,我只是不能告诉你它有多好。值得一试。此外,如果您正在寻找教程,我已经阅读了大部分教程,它们非常好。

于 2014-03-11T18:03:57.630 回答