opengl 为Mac OSX构建glew

7kjnsjlb  于 2022-11-04  发布在  Mac
关注(0)|答案(7)|浏览(208)

我花了一天的时间努力让我的简单引擎在Mac上工作。我有SDL的工作,现在唯一的麻烦是opengl。引擎使用现代opengl(着色器为基础),所以需要GLEW。我已经尝试了一切从fink到MacPorts安装它,没有工作。
我最成功的是从源代码构建它。首先我得到了一个错误,说'GL/glu.h' no such file or directory found.,所以我重命名包含为OpenGL/glu.h,这就解决了这个问题。但现在我得到了这个错误ld: unknown option: -shared,我完全卡在这一点上。
如果有人知道如何做到这一点,我也宁愿静态构建。

o4hqfura

o4hqfura1#

您可以使用Homebrew为您完成这项工作:

brew install glew
ny6fqffe

ny6fqffe2#

引擎使用现代的opengl(基于着色器),因此需要GLEW
GLEW并不是使用现代OpenGL功能的先决条件。它是一种加载扩展功能的方法,而不是唯一的方法。你使用的是MacOS X,所以扩展系统对你来说用处不大,因为支持的OpenGL版本完全取决于操作系统和可用的框架。苹果自己开发OpenGL驱动程序,他们提供的扩展只是那些,OpenGL规范中没有的功能(即特定供应商和EXT)。您所需要的只是一个足够新的OpenGL框架版本。2006年之后发布的任何MacOS X都可以做到这一点。

ztigrdn8

ztigrdn83#

更新20180912 -不要使用GLEW。它只是不值得的麻烦...

我已经使用以下代码从源代码安装了GLEW:

使GLEW_DEST="$HOME/local”OPT="-march= core 2-O2”安装全部

您的优化和目标可能会有所不同。这将生成libGLEW. a、libGLEWmx. a,以及$HOME/local/lib中的dylib对应项。pkgconfig子目录还将包含glew.pc。GLEW也不总是与其他文件兼容。必须设置像glewExperimental这样的全局文件,并且需要注意包含其他头文件的顺序:<OpenGL/gl3.h><glfw.h>等等。
如果我可以提供一些建议-忘记SDL的现代GL编程。如果你想进入 * 纯 *,现代GL的OS X。-考虑这样的东西:


# 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也非常简单:
请输入可可的密码,如果您有任何问题,请与我们联系。
同样,您的设置可能会有所不同。
2016年4月12日:我对SDL的评论已经过时了,就像其他人指出的那样。特别是如果你正在开发另一个引擎的话。我认为glfw 3是在OSX上制作现代OpenGL应用程序的一种更简单的方法。它的代码编写和维护都非常好,(正确!)将重点放在GL与事件处理上.显然,从“引擎”得Angular 来看,SDL 2提供了可移植得扩展视频API,音频API,线程API,尽管对于C11和C++11,甚至线程API抽象层也可能是冗余的。
GLEW的问题在于,在没有大量用户干预的情况下,它无法处理多个上下文。这对OSX来说不是问题,OSX提供了一个核心配置文件API,不需要加载“功能点”。IIRC,GL on X(DRI?)也有这个--但我可能错了。还有其他的加载器在那里。我还在等待一个来统治他们所有人,这确保在必要时为多个上下文加载不同的函数指针,并使用线程本地(甚至pthread键)进行正确调度,这可以从Khronos或其他任何人的最新gl.xml中生成...

2018年9月12日

我认为现在最简单的方法是使用GLFW提供上下文,并使用GLAD解析GL函数指针。唯一的缺点是没有有效的管理多个GL上下文。这是GLFW目前在其演示中使用的......在这一点上,我会完全忘记GLEW。

ogq8wdun

ogq8wdun4#

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

h79rfbju

h79rfbju5#

上面的答案没有一个能满足我的需求:这是一种快速设置Xcode项目方法,它带有静态Glew依赖项。
1.从此处下载GLEW源代码http://glew.sourceforge.net/
1.解压缩目录,并从根目录执行

$sudo make install

(this如果您想动态链接,安装.dylib,它位于lib/)。您需要安装CMake才能运行上面的命令。如果尚未安装,您可以使用

brew install cmake

1.将.a静态库从/usr/local/lib/复制到XCode项目
1.更新目标的Xcode构件设置中的“标头搜索路径”以包括标头(通常位于/usr/local/include中)。或者只是将标头拷贝到您自己的项目中。

2o7dmzc5

2o7dmzc56#

我建议你去http://glew.sourceforge.net下载ZIP文件到你的Mac上,然后在Finder中输入glew.h来查看文件,控制点击它,获取信息,复制文件的路径,然后进入你各自的程序文件(例如commons.h),它包含#include <GL/glew.h>依赖项,并将其更改为:


# include <path/to/file/that/you/just/copied/glew.h>

然后,尝试再次编译程序,这次应该不会出现任何GLEW错误。

cig3rfwq

cig3rfwq7#

也许你应该试试这个命令brew install --build-from-source glew

相关问题