更改默认OpenGL上下文配置文件版本

时间:2015-02-18 11:41:07

标签: macos cocoa opengl opengl-3

要创建配置文件版本为3.2的OpenGL上下文,我需要在创建上下文时将属性添加到像素格式:

...,
NSOpenGLPFAOpenGLProfile, (NSOpenGLPixelFormatAttribute) NSOpenGLProfileVersion3_2Core,
...,

是否有一种方法(环境变量,全局变量,在创建NSOpenGLPixelFormat之前调用的函数,...),以便在没有指定此类属性时更改默认的OpenGL配置文件版本。它默认为OS X 10.10上的旧版本。我正在尝试将依赖于较新OpenGL功能的代码与设置OpenGL上下文的框架(ROOT)集成,并且无法改变参数。

有没有办法在OpenGL上下文设置后更改像素格式属性?

2 个答案:

答案 0 :(得分:1)

与OpenGL上下文关联的像素格式(此处的正确术语是“default framebuffer”)始终是不可变的。 OpenGL本身并不控制或指示这一点,它实际上是强加此限制的窗口系统API(例如WGL,GLX,EGL,NSOpenGL)。

我看到这个特定问题的唯一方法是,如果您创建自己的屏幕外(核心3.2)上下文,该资源与ROOT创建的遗留(2.1)上下文共享资源。如果OS X实际上允许你进行这种上下文共享(因为这两个上下文可能算作不同的渲染器),你可以在核心上下文中绘制一个renderbuffer对象,然后使用{{{}将renderbuffer blit到你的遗留上下文中。 3}}

请注意,Framebuffer对象不是上下文可共享资源。你在这个例子中分享的是实际的图像附件(Renderbuffer或Texture),这意味着你必须在两个上下文中维护具有相同附件的单独FBO。

答案 1 :(得分:0)

glutInitContextVersion (3, 3);

可以将openGL版本设置为3.3,您可以根据需要更改版本。