【问题标题】:Changing default OpenGL context profile version更改默认 OpenGL 上下文配置文件版本
【发布时间】:2015-02-18 11:41:07
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: macos cocoa opengl opengl-3


    【解决方案1】:

    与 OpenGL 上下文相关的像素格式(此处的正确术语是 “默认帧缓冲区”)始终是不可变的。 OpenGL 本身并不控制或规定这一点,实际上是窗口系统 API(例如 WGL、GLX、EGL、NSOpenGL)施加了这种限制。

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

    请注意,帧缓冲区对象不是上下文可共享资源。在此示例中您最终共享的是实际的图像附件(Renderbuffer 或纹理),这意味着您必须在两种上下文中维护具有相同附件的单独 FBO。

    【讨论】:

      【解决方案2】:
      glutInitContextVersion (3, 3);
      

      可以将openGL版本设置为3.3,你可以随意更改版本。

      【讨论】:

        猜你喜欢
        • 2013-12-16
        • 1970-01-01
        • 1970-01-01
        • 2017-02-13
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 2020-09-15
        • 1970-01-01
        相关资源
        最近更新 更多