2017-08-05 2 views
-2

hier ein SIGSEGV Fehler verursacht ist die Fehlermeldung:LWJGL3.1 alle GL11 Anrufe

# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# SIGSEGV (0xb) at pc=0x0000000137304bab, pid=55750, tid=0x000000000000080b 
# 
# JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11) 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode bsd-amd64 compressed oops) 
# Problematic frame: 
# C [liblwjgl_opengl.dylib+0xcbab] 
# 
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 
# 
# An error report file with more information is saved as: 
# /Users/leobattle/Desktop/Programming/Java/Minecraft Modding/GLGame/GLGame/hs_err_pid55750.log 
# 
# If you would like to submit a bug report, please visit: 
# http://bugreport.java.com/bugreport/crash.jsp 
# The crash happened outside the Java Virtual Machine in native code. 
# See problematic frame for where to report the bug. 
# 

Ich bin auf macOS 10,12 und mit Hilfe von Java 8.

Warum sollte es einen Segmentation Fault verursachen und wie repariere ich es?

Code:

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); } 
+3

Dies ist im Grunde ein Dump dieses Signal SEGV zu wissen, wird in Ihrem Prozess gesendet wurde. Es gibt keine Möglichkeit zu helfen oder Ihr Problem zu lösen, ohne zu wissen, was Sie tun. Überlegen Sie, welchen Debugger Sie auch verwenden möchten. Es wird höchstwahrscheinlich den fehlerhaften Code zeigen. –

+0

Können Sie relevanten Code posten? Versuchen Sie, mit den alten festen Funktionspipelines zu zeichnen? Welche Version setzen Sie in Ihrem Fenster (GLFW vorausgesetzt) ​​ –

+0

while (GLFW.glfwWindowShouldClose (window)! = True) { \t \t \t GLFW.glfwPollEvents(); \t \t \t \t \t \t GL11.glClearColor (0F, 0F, 0F, 0F); \t \t \t GL11.glClear (GL11.GL_COLOR_BUFFER_BIT); \t \t \t \t \t \t GL11.glBegin (GL11.GL_QUADS); \t \t \t \t GL11.glVertex2f (-0.5f, 0.5f); \t \t \t \t GL11.glVertex2f (0.5f, 0.5f); \t \t \t \t GL11.glVertex2f (0.5f, -0.5f); \t \t \t \t GL11.glVertex2f (-0.5f, -0.5f); \t \t \t GL11.glEnd(); \t \t \t \t \t \t GLFW.glfwSwapBuffers (Fenster); \t \t} – user8421762

Antwort

1

Oops. Gelöst! Ich habe vergessen GL.createCapabilities() hinzuzufügen;

0

Ich sehe, Sie haben Ihre Frage dort beantwortet, aber ich habe ein wenig mehr Einblick in was genau GL.createCapabilities() tut.

Sobald Sie Ihren Kontext mit GLFW glfwMakeContextCurrent() erstellt haben, haben wir nur einen Kontext mit Ihrem Fenster, aber einige Dinge fehlen noch.

GL.createCapabilities() macht 3 Dinge; lädt die nativen Bibliotheken, erstellt Instanzen von GLCapabilities (mit denen Sie viele Dinge über Ihren Kontext überprüfen können, z. B. kompatible Erweiterungen) und erstellt einige Threads zum Verwalten der genannten GLC-Fähigkeiten.

(Obwohl ich nicht getestet haben, denke ich, GL.create() wird auch Ihr Problem lösen.)

Offensichtlich ist das Problem, das Sie in der Tatsache, war wurden begegnen, dass die Bibliotheken fehlten, und das ist, was gab dir den Fehler. Das ist in Ordnung, ich habe den gleichen Fehler auch. Stellen Sie sicher, dass Sie GL.createCapabilities() aufrufen, nachdem ein Kontext erstellt wurde (und aktuell ist), jedoch vor allen OpenGL-Aufrufen.

können Sie mehr hier lesen: https://javadoc.lwjgl.org/org/lwjgl/opengl/GL.html