glfwGetPrimaryMonitor() NullPointerException

glfwGetPrimaryMonitor() NullPointerException

我正在学习如何使用 ThinMatrix 的 LWJGL 2 教程制作 Java 游戏,我正在适应 LWJGL 3。无论如何,我无法让游戏检测到我的显示器。就在几天前,它在具有完全相同硬件的完全相同的系统上运行良好。

我试过为它们安装驱动程序、卸载驱动程序以及从设备管理器中完全卸载显示器。什么都不管用。如果您需要更多信息,请告诉我!

这是我的源代码:

Main.java:

package engineTest;

import static org.lwjgl.glfw.GLFW.*;

import static renderEngine.displayManager.*;

public class Main {

    public static void main(String[] args) {

        window = glfwCreateWindow(WIDTH, HEIGHT, "Farm Game", glfwGetPrimaryMonitor(), 0);

        while(!glfwWindowShouldClose(window)) {

            updateDisplay();

        }

        glfwDestroyWindow(window);

    }

}

displayManager.java

package renderEngine;

import static org.lwjgl.glfw.GLFW.*;

import org.lwjgl.opengl.GL11;

public class displayManager {

    public static int WIDTH = 1280;
    public static int HEIGHT = 720;
    private static int FPS_CAP = 120;

    public static long window;

    public static void createDisplay() {

        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 5);
        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);

        GL11.glViewport(0, 0, WIDTH, HEIGHT);
    }

    public static void updateDisplay() {

        glfwPollEvents();
        glfwSwapBuffers(FPS_CAP);

    }

    public static void closeDisplay() {

        glfwDestroyWindow(window);

    }

}

这是错误输出。

Exception in thread "main" java.lang.NullPointerException
   at org.lwjgl.system.Checks.check(Checks.java:99)
   at org.lwjgl.glfw.GLFW.glfwWindowShouldClose(GLFW.java:1874)
   at engineTest.Main.main(Main.java:13)

编辑

我一直在尝试调试 NullPointerException,我知道是什么导致了它。问题是我不知道如何解决它。抱歉,我是 Java 的新手。

您必须调用 glfwInit() 才能使用任何其他 glfw 方法。由于缺少它,glfwCreateWindow 总是 returns 空指针。