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);
驱动程序可能会提供最高可用版本,但也具有所有旧功能。
我有一个稍微修改过的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);
驱动程序可能会提供最高可用版本,但也具有所有旧功能。