我正在使用LWJGL在OS X上制作游戏,而且我已经读过OS X不支持兼容性配置文件,默认情况下,我创建的任何上下文都只支持2.1版或更早版本。我想使用更现代的东西,所以我试图让4.1上下文工作(4.1是我的电脑支持的最新版本,据Apple称)。
据我所知,在LWJGL中请求某个版本的OpenGL的方法是将ContextAttribs(major_version, minor_version)
传递给Display.create()
,如下所示:
Display.create(new PixelFormat(), new ContextAttribs(4, 1));
我决定通过在我的顶点着色器中放置一个#version 410
语句来测试这是有效的,但是,当我查询"着色器信息日志"我收到错误消息:
ERROR: 0:1: '' : version '410' is not supported
此时我真的不知道该怎么做。我知道我的显卡支持OpenGL 4.1,我要求LWJGL提供4.1上下文,但显然它不会给我一个。还有什么需要做的来支持这个吗?
答案 0 :(得分:4)
显然,生成OpenGL 4.1上下文的必要LWJGL调用如下所示。
Display.create(new PixelFormat(), new ContextAttribs(3, 2).withForwardCompatible(true).withProfileCore(true));
注意: 必须为ContextAttribs(3, 2)
,不 (4, 1)
。我认为这是由于Apple的OpenGL支持有些奇怪。 显然他们并不真正支持OpenGL 4.1,他们支持3.2与4.1的向前兼容性。愚蠢,我知道。 编辑: 这不完全正确。有关详细信息,请参阅注释。
我发现此页面有助于解决所有问题:LWJGL Version Selection