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

OpenGL version changes when ContextAttribs() value is changed

本文关键字:版本 ContextAttribs OpenGL      更新时间:2023-10-16

我想将我正在使用的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 英特尔-10.12.13

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

OpenGL 版本 2.1 英特尔-10.12.13

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

看看 LWJGL ContextAttribs 类的文档。它指出:

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