【问题标题】:Installing FreeGLUT on OS X Mavericks在 OS X Mavericks 上安装 FreeGLUT
【发布时间】:2013-10-29 01:26:24
【问题描述】:

现在 OS X 可以使用 OpenGL 4+,我想开始学习更现代的 OpenGL。我关注的tutorial 使用 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 用户?

【问题讨论】:

  • 好吧,那行不通。该教程是为使用 X11(可能是 Linux 或一些 BSD 变体)的操作系统编写的。 OS X 使用自己的称为 Quartz 的窗口系统。您也不会在 OS X 上运行时加载扩展。并且您使用像 -framework OpenGL 这样的指令。您尝试遵循的教程有太多问题,我建议您查看基本的 OS X 教程以获得有效的构建环境,然后尝试遵循您尝试实现的任何特殊内容。
  • Andon M. Coleman - 虽然严格地说,OS X 使用 Quartz 作为其本机窗口系统是正确的,但 Mac 在 1980 年代后期的 System 6.x 上支持 X11。今天为 Mac OS X 实现的 X11 或多或少是 Quartz 的一个包装器。许多 *NIX/X11 程序已移植到 X11。它们并不总是开箱即用,但大多数都可以。

标签: macos opengl glut freeglut


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    澄清一点,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
    

    效果很好,无需安装任何额外的库。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:
        #include <stdio.h>
        #include <stdlib.h>
        
        #if defined(__APPLE__)
        #include <GLUT/glut.h>
        #else
        #include <GL/glut.h>
        #endif
        

        这些是 b.c 的标题

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

        ./b 在 gult 中查看结果

        【讨论】:

          猜你喜欢
          • 2013-11-01
          • 2014-11-30
          • 2014-03-05
          • 1970-01-01
          • 2013-11-11
          • 2013-11-17
          • 1970-01-01
          • 1970-01-01
          • 2014-04-24
          相关资源
          最近更新 更多