我有一台运行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。所以这可能不是问题。
答案 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);