2017-05-31 1 views
0

Ich bin neu in LWJGL und OpenGL, und ich habe einige Google-Suche gemacht und konnte nichts anderes finden, das zu diesem Thema zu finden.Aufruf der Funktion "glClearColor()" verursacht Core-Dump

Ich habe ein grundlegendes Testprogramm erstellt, um ein leeres Fenster zu erstellen. Ich kann das Fenster erstellen und die Anwendung fein ausführen, aber wenn ich versuche, die klare Farbe mit glClearColor() zu ändern, stürzt die Anwendung ab.

Hier ist der Text in der Konsole ausgegeben:

[error occurred during error reporting (printing problematic frame), id 0xe0000000] 
# 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: 
# /*****/*******/eclipse/java-neon/workspace/LWJGL Project/hs_err_pid10749.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. 
# 

Dies ist die Datei, die den Fehler erstellt (ziemlich groß): https://pastebin.com/9h0gsRmTlink

Dies ist der Code:

package me.smorce.project; 

import static org.lwjgl.glfw.GLFW.*; 
import static org.lwjgl.opengl.GL11.*; 
import static org.lwjgl.system.MemoryUtil.*; 
import org.lwjgl.glfw.GLFWVidMode; 
import me.smorce.project.input.Input; 

public class Game 
{ 
    public boolean running = false; 
    private long window; 
    public int windowWidth = 1280; 
    public int windowHeight = windowWidth/16 * 9; 

    public void start() 
    { 
     running = true; 
     init(); 
     while(running) 
     { 
      update(); 
      render(); 
      if(glfwWindowShouldClose(window)) running = false; 
     } 
    } 

    private void init() 
    { 
     if(!glfwInit()) 
     { 
      System.err.println("GLFW failed to initialize!"); 
      return; 
     } 
     glfwWindowHint(GLFW_RESIZABLE, GL_TRUE); 
     window = glfwCreateWindow(windowWidth, windowHeight, "Game", NULL, NULL); 
     if(window == NULL) 
     { 
      System.err.println("GLFW failed to create the window"); 
      return; 
     } 
     GLFWVidMode videoMode = glfwGetVideoMode(glfwGetPrimaryMonitor()); 
     glfwSetWindowPos(window, (videoMode.width() - windowWidth)/2, (videoMode.height() - windowHeight)/2); 
     glfwSetKeyCallback(window, new Input()); 
     glfwMakeContextCurrent(window); 
     glEnable(GL_DEPTH_TEST); 
     System.out.println("OpenGL: " + glGetString(GL_VERSION)); 
     glfwShowWindow(window); 
     glClearColor(1.0f, 1.0f, 1.0f, 1.0f); 
    } 

    private void update() 
    { 
     glfwPollEvents(); 
     if(Input.keys[GLFW_KEY_SPACE]) 
     { 
      System.out.println("SPACE BAR"); 
     } 
    } 

    private void render() 
    { 
     glfwSwapBuffers(window); 
    } 
} 

Alle Hinweise/Tipps wären hilfreich. Danke im Voraus.

+0

Statt Links, wenn das Beste wäre, direkt hier Ihren Code zu veröffentlichen, vor allem, wenn es kurz ist (der Fehlerausgang könnte ein wenig sein groß, aber man könnte wenigstens die ersten Teile posten, die normalerweise die wichtigsten Informationen enthalten). Dadurch wird es einfacher, Ihre Frage zu lesen und zu verstehen, und die Leute werden mehr bereit sein zu helfen - und zu guter Letzt: Links können im Laufe der Zeit brechen. – Thomas

+0

@Thomas Danke, ich habe es aktualisiert. – smorce

Antwort

1

Sie vermissen

GL.createCapabilities();

Vom getting started:

// This line (~the above) is critical for LWJGL's interoperation with GLFW's 
// OpenGL context, or any context that is managed externally. 
// LWJGL detects the context that is current in the current thread, 
// creates the GLCapabilities instance and makes the OpenGL 
// bindings available for use. 

Auch als auch glEnable(GL_DEPTH_TEST); nach dieser Zeile bewegen.

Sie erhalten nicht einen Absturz jetzt auf Ihrem Computer, aber Sie können mit unterschiedlichen Bedingungen

+0

Ah das macht Sinn. Vielen Dank! – smorce

Verwandte Themen