LWJGL: glfwCreateWindow return null

I tried to use the LWJGL library in Java while reviewing the tutorial, but I will return null to create the window.

This is the code:

import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.*;
import static org.lwjgl.system.MemoryUtil.*;
import java.nio.ByteBuffer;
import org.lwjgl.glfw.GLFWvidmode;

public class Main implements Runnable {
    private int height = 720, width = height / 9 * 16;
    private String title = "Game";

    private Thread thread;
    private boolean running = false;

    private long window;

    public void start() {
        running = true;
        thread = new Thread(this, title);
        thread.start();
    }

    private void init() {
        if(glfwInit() != GL_TRUE) {
            System.err.println("Non riesco ad inizializzare GLFW!");
            return;
        }

        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
        glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
        window = glfwCreateWindow(width, height, title, NULL, NULL);

        if(window == NULL) {
            System.err.println("Non riesco a creare una finestra GLFW!");
            return;
        }

        ByteBuffer vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
        glfwSetWindowPos(window, (GLFWvidmode.width(vidmode) - width) / 2, (GLFWvidmode.height(vidmode) - height) / 2);

        glfwMakeContextCurrent(window);
        glfwShowWindow(window);
    }

    @Override
    public void run() {
        init();
        while(running) {
            update();
            render();

            if(glfwWindowShouldClose(window) == GL_TRUE)
                running = false;
        }
    }

    private void update() {
        glfwPollEvents();
    }

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

    public static void main(String[] args) {
        new Main().start();
    }
}

It returns the following error:

Non riesco a creare una finestra GLFW!
Exception in thread "Game" java.lang.NullPointerException
    at org.lwjgl.system.Checks.checkPointer(Checks.java:66)
    at org.lwjgl.glfw.GLFW.glfwSwapBuffers(GLFW.java:2546)
    at com.michele.flappybird.Main.render(Main.java:66)
    at com.michele.flappybird.Main.run(Main.java:54)
    at java.lang.Thread.run(Unknown Source)

How can i fix it? Thanks to everyone who is trying to help me.

+4
source share
1 answer

My first attempt was to simplify the program by deleting it Thread, since LWJGL sometimes has problems with method calls due to the main thread. The second attempt is to remove the methods glfwWindowHint(...)and call insteadglfwDefaultWindowHints()

+1
source

All Articles