我花了一天时间努力让我的简单引擎在Mac上运行。我有SDL工作,现在唯一给麻烦的是opengl。该引擎使用现代opengl(基于着色器),因此需要GLEW。我已经尝试了从fink到MacPorts的所有东西来安装它,但没有任何作用。
我所获得的最大成功是从源头构建它。首先我收到错误'GL/glu.h' no such file or directory found.
所以我将包含重命名为OpenGL/glu.h
并修复了该问题。但现在我收到了这个错误ld: unknown option: -shared
我完全陷入了困境。
如果有人知道如何做,那也是静态构建。
答案 0 :(得分:27)
您可以使用Homebrew为您完成工作:
brew install glew
答案 1 :(得分:12)
引擎使用现代opengl(基于着色器),因此需要GLEW
GLEW不是使用现代OpenGL功能的先决条件。加载扩展功能的方法是 ,而不是 。你在MacOS X上,所以扩展系统对你来说没用,因为支持的OpenGL版本完全取决于操作系统和可用的框架。 Apple自己开发OpenGL驱动程序,它们提供的扩展只是那些用于OpenGL规范中没有的功能(即特定于供应商和EXT)的扩展。您所需要的只是一个足够新的OpenGL框架版本。 2006年之后发布的任何MacOS X都可以实现。
答案 2 :(得分:5)
更新20180912 - 请勿使用GLEW。这不值得麻烦......
我使用源代码安装了GLEW:
使GLEW_DEST =“$ HOME / local”OPT =“ - march = core2 -O2”install.all
您的优化和目的地可能会有所不同。这会产生一个libGLEW.a,libGLEWmx.a,以及它们在$HOME/local/lib
中的dylib对应物。 pkgconfig
子目录还包含glew.pc
。 GLEW并不总能与其他人合作。必须设置像glewExperimental
这样的全局变量,并且需要注意其他标题的包含顺序:<OpenGL/gl3.h>
或<glfw.h>
等。
如果我可以提供一些建议 - 忘记现代GL编程的SDL。如果你想在OS X上进入 pure ,现代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也很简单:
<强>&GT; env PREFIX =“$ HOME / local”CFLAGS =“ - march = core2 -O2”make cocoa cocoa-dist-install
同样,您的设置可能会有所不同。
20160412:正如其他人所指出的那样,我对SDL的评论已经过时了。特别是如果你正在使用另一个引擎。我认为glfw3是一种在OSX上制作现代OpenGL应用程序的简单方法。它的编写和维护代码非常好,对GL和事件处理(正确!)的关注很简单。显然,从“引擎”的角度来看,SDL2提供了可移植的扩展视频API,音频API,线程API等。虽然使用C11和C ++ 11,但即使是线程API抽象层也许是多余的。
GLEW的问题在于,如果没有广泛的用户干预,就无法处理多个上下文。对于OSX来说,这不是问题,OSX提供核心配置文件API,不需要加载“功能点”。 IIRC,GL on X(DRI?)也有这个 - 但我可能错了。还有其他装载机。我还在等待一个人来统治它们,这可以确保在必要时为多个上下文加载不同的函数指针,并使用线程本地(甚至是pthread键)进行正确的调度,这可以从最新的gl生成来自Khronos的.xml,或任何......
<强> 20180912 强>
我认为现在最简单的方法是使用GLFW提供上下文,并使用GLAD来解析GL函数指针。唯一的缺点是没有有效管理多个GL上下文。这就是GLFW目前在其演示中使用的......我现在完全忘记了GLEW。
答案 3 :(得分:4)
MacPorts应该为您安装这些库及其依赖项:
sudo port install glew +universal
sudo port install libsdl +universal
在构建游戏时,最好为构建和链接步骤调用g ++;您只需要参考 / opt / local ,就可以找到MacPorts已安装的标头和库。如果您愿意,也可以静态链接.a文件:
g++ -c -O3 -I/opt/local/include main.cpp -o main.o
g++ main.o /opt/local/lib/libSDL.a /opt/local/lib/libSDLmain.a /opt/local/lib/libGLEW.a -o mygame
如果您是从命令行构建的,我建议using a Makefile and building with make。
答案 4 :(得分:2)
我建议您前往http://glew.sourceforge.net并将ZIP文件直接下载到Mac上。然后进入Finder并键入glew.h以查看文件,控制单击它,获取信息,并将路径复制到该文件。然后进入包含#include <GL/glew.h>
依赖项的相应程序文件(例如,commons.h),并将其更改为:
#include <path/to/file/that/you/just/copied/glew.h>
然后,尝试再次编译您的程序,这次您不应该得到任何GLEW错误。
答案 5 :(得分:1)
上面的答案都没有给我我想要的东西:使用静态Glew依赖项设置和Xcode项目的快速方法。
类型
$sudo make install
来自解压缩目录的(如果要动态链接,则安装.dylib)。您需要安装CMake。