LWJGL:glfwCreateWindow返回null [英] LWJGL: glfwCreateWindow return null
本文介绍了LWJGL:glfwCreateWindow返回null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在看Java尝试使用Java编写LWJGL库,但是创建窗口后,我将返回null.
I was trying LWJGL library in Java seeing the tutorial, but the creation of the window I will return null.
这是代码:
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();
}
}
返回以下错误:
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? Thanks to anyone trying to help me.
推荐答案
我的第一个尝试是通过删除Thread
来简化程序,因为LWJGL有时在从主线程外部调用方法时遇到问题.第二次尝试是删除glfwWindowHint(...)
方法,而是调用glfwDefaultWindowHints()
My first attempt would be to simplify the program by removing the Thread
, since LWJGL sometime has problems calling methods from outside the main thread. The second attempt would be to remove the glfwWindowHint(...)
methods and instead call glfwDefaultWindowHints()
这篇关于LWJGL:glfwCreateWindow返回null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文