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 空指针。
我正在学习如何使用 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 空指针。