在Mac上使用SDL2设置OpenGL上下文3.3,不起作用

时间:2015-04-02 20:23:01

标签: macos opengl sdl sdl-2 glew

我尝试使用以下代码将OpenGL上下文设置为v3.3,它创建了一个4.1上下文。

SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 3);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);

我做错了什么或是mac问题?

1 个答案:

答案 0 :(得分:2)

当您要求OpenGL X.Y上下文时,OpenGL不能保证完全一个OpenGL X.Y上下文。这取决于你使用的驱动程序。

  • 在OS X上,如果您要求核心上下文,您将获得硬件和操作系统组合支持的最高版本。如果您要求兼容性上下文,则会获得2.1。

  • 在我的Linux / Mesa系统上,我总是获得3.0兼容性上下文和3.3核心上下文。

  • 在我的Windows / AMD系统上,我得到了我要求的版本。

如果您的代码假定上下文为3.3,则4.1上下文应该可以正常工作。只需检查GL版本是否是> =您需要的版本,并在需要时检查您是否具有兼容性上下文。