在OSX上链接OpenGL框架

时间:2015-06-16 08:10:55

标签: c++ c macos opengl graphics

我有一台运行Yosemite的Mac,支持OpenGL 4.x,但每当我使用“-lSDL2 -framework OpenGL”标志编译c ++项目时,它会自动使用安装在/ System / Library / Frameworks下的OpenGL 1.20。正确的版本安装在/Applications/XCode.app /中的长路径中... 有没有办法让gcc编译器正确地选择旧版本的OpenGL 4.x版本?

编辑: 它似乎无关紧要哪个链接,它仍然使用不正确的版本。它似乎在行“SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,SDL_GL_CONTEXT_PROFILE_CORE);”时使用了正确的版本。被添加。但是它仍然说不支持GLSL版本#130。所以这可能不是问题。

2 个答案:

答案 0 :(得分:0)

您可以使用-isysroot选项来指定特定的SDK位置。例如:

clang -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk ...

这将告诉编译器使用此特定SDK版本中的所有头文件,库等。

答案 1 :(得分:0)

我知道这个答案来晚了,但可能会对其他人有所帮助

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK,SDL_GL_CONTEXT_PROFILE_CORE);

此行仅指定正在使用的配置文件,对于OpenGL,应通过将主要版本和次要版本确定为下两行来明确显示该信息。

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION,3); //确定您的Maj版本 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION,2); //确定您的最低版本

也在GLSL中使用:

#version 320核心//通过将次要0设置为使用您的版本而不是320

,如果您使用的是GLFW,并且您在MAC中,请添加以下行:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);