ContextAttribs()值更改时,OpenGL版本更改

时间:2016-02-23 23:30:31

标签: java c++ macos opengl

我想将我使用的OpenGL版本从3.2更改为3.3,以便我可以实现实例化渲染。目前我的OpenGL初始化代码如下所示。

ContextAttribs attribs = new ContextAttribs(3, 2).withForwardCompatible(true).withProfileCore(true);

所以我把它改成了......

ContextAttribs attribs = new ContextAttribs(3, 3).withForwardCompatible(true).withProfileCore(true);

唯一的区别是我放在ContextAttribs()中的OpenGL版本。

我在2013年MacBook Air上运行此应用程序,根据https://support.apple.com/en-us/HT202823

,OpenGL功能最高可达4.1

创建显示后,我放置了以下代码

System.out.println("OpenGL version " + GL11.glGetString(GL11.GL_VERSION));

这允许我检查我正在使用的OpenGL版本。这是棘手的部分。当我把ContextAttribs(3,2)打印出来时

  

OpenGL 4.1版INTEL-10.12.13

但是,如果我将其更改为ContextAttribs(3,3),我的应用程序崩溃并打印出来

  

OpenGL版本2.1 INTEL-10.12.13

我不知道如何解决这个问题,如果有人可以,我会非常感激。感谢您阅读本文。

1 个答案:

答案 0 :(得分:1)

查看LWJGL ContextAttribs类的doc。它声明:

  

但是,为了在MacOS X 10.7或更高版本上启用GL 3.2上下文,必须将此类的实例传递给LWJGL。唯一有效的配置是ContextAttribs(3,2,CONTEXT_CORE_PROFILE_BIT_ARB),其他任何内容都将被忽略。