LWJGL 3.1.6 OpenGL 4.1在macOS High Sierra上崩溃

时间:2018-04-12 17:08:54

标签: opengl crash lwjgl macos-high-sierra forward-compatibility

我在主LWJGL页面上找到了sample code的略微修改版本。它可以工作,但它使用传统的OpenGL版本2.1。如果我尝试使用GLFW doc中描述的向前兼容上下文,使用的版本是4.1(无论我提示的是什么主要/次要),窗口都会创建,但是它会崩溃< / strong>首次拨打glPushMatrix()

正向启用兼容性:

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

我在控制台中打印的一些信息:

LWJGL 3.1.6 build 14
OS name Mac OS X
OS version 10.13.4
OpenGL version 4.1 ATI-1.66.31

日志记录:

[LWJGL] A function that is not available in the current context was called.
Problematic frame:
C  [liblwjgl.dylib+0x1c494]

从这里我不知道该找什么。该代码应该有效吗?还是我错过了一些仪式?许多资源已经过时,这使得解决问题变得更加困难。

1 个答案:

答案 0 :(得分:2)

glPushMatrix是非核心配置文件上下文的函数,但对于OpenGL&lt; 3.2。

如果您想使用它(以及其他预核心功能),您需要兼容性上下文,而不是前向兼容,不是核心资料

GLFW提示应该是这样的,而不需要核心配置文件。

glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_COMPAT_PROFILE);

可能驱动程序会提供最高版本,但也包含所有旧功能。