LWJGL3.1任何GL11调用都会导致SIGSEGV错误

时间:2017-08-05 15:01:18

标签: java opengl segmentation-fault lwjgl

以下是错误消息:

while (GLFW.glfwWindowShouldClose(window) != true) { 
    GLFW.glfwPollEvents(); 
    GL11.glClearColor(0f, 0f, 0f, 0f); 
    GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); 
    GL11.glBegin(GL11.GL_QUADS); 
    GL11.glVertex2f(-0.5f, 0.5f); 
    GL11.glVertex2f(0.5f, 0.5f); 
    GL11.glVertex2f(0.5f, -0.5f); 
    GL11.glVertex2f(-0.5f, -0.5f); 
    GL11.glEnd(); 
    GLFW.glfwSwapBuffers(window);
} 

我在macOS 10.12并使用Java 8。

为什么会导致seg-fault,我该如何解决?

代码:

{{1}}

2 个答案:

答案 0 :(得分:1)

糟糕。解决了!我忘了添加GL.createCapabilities();

答案 1 :(得分:1)

我看到你在那里已经回答了你的问题,但我对GL.createCapabilities()的确切内容有了更深入的了解。

一旦您使用GLFW的glfwMakeContextCurrent()创建了上下文,我们的窗口只有一个上下文,但仍然缺少某些内容。

GL.createCapabilities()做3件事;加载本机库,创建GLCapabilities的实例(可用于检查有关上下文的很多内容,例如,兼容的扩展)并创建一些线程来管理所述GLCapabilities。

(虽然我没有经过测试,但我认为GL.create()也会解决你的问题。)

显然,您遇到的问题是图书馆遗失了,这就是错误的原因。没关系,我也得到了同样的错误。只需确保在创建上下文(并且是当前的)之后但在任何OpenGL调用之前调用GL.createCapabilities()。

您可以在此处阅读更多内容:https://javadoc.lwjgl.org/org/lwjgl/opengl/GL.html