繁体   English   中英

在 OSX 上链接 OpenGL 框架

[英]Linking OpenGL framework on OSX

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

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

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

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

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

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

SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);

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

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

也在 GLSL 中使用:

#version 320 core // 通过放置 Major Minor 0 来使用你的版本而不是 320

如果您正在使用 GLFW,如果您在 MAC 中,也添加此行:

glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT,GL_TRUE);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM