我尝试使用以下代码将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问题?
答案 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版本是否是> =您需要的版本,并在需要时检查您是否具有兼容性上下文。