在 mac 上使用 SDL2 设置 OpenGL 上下文 3.3,不工作

Set OpenGL context 3.3 with SDL2 on mac, not working

我尝试使用以下代码将 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问题?

OpenGL 不提供任何保证,即当您请求 OpenGL X.Y 上下文时,您会完全 获得 OpenGL X.Y 上下文。这取决于您使用的驱动程序。

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

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

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

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