LWJGL 3.1.6 OpenGL 4.1 在 macOS High Sierra 上崩溃

LWJGL 3.1.6 OpenGL 4.1 crash on macOS High Sierra

我有一个稍微修改过的sample code found on the main LWJGL page. It works but it uses legacy OpenGL version 2.1. If I attempt to use the forward-compatible context described in GLFW doc版本,使用的版本是4.1(无论major/minor我提示什么),window被创建,但是 它在第一次调用 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]

从这里我不知道要寻找什么。这段代码应该工作吗?还是我错过了一些仪式?许多资源已经过时,因此更难弄明白。

glPushMatrix 不是 Core Profile 上下文的函数,而是 OpenGL < 3.2 的函数。

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

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

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

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