当前位置: 首页 > 知识库问答 >
问题:

Lwjgl窗口未打开

梁丘钊
2023-03-14
package ca.immanuel.flappy;


import org.lwjgl.glfw.GLFWVidMode;

import static org.lwjgl.glfw.GLFW.*;
import static org.lwjgl.opengl.GL11.GL_TRUE;
import static org.lwjgl.system.MemoryUtil.NULL;


public class Main implements Runnable {

    private int width = 1280;
    private int height = 720;

    private Thread thread;
    private boolean running = false;

    /*
        LWJGL cant use the GLFWwindow struct because structs don't exist in java
        so we instead use an ID system in Java that's why we use a long.
    */
    private long window;

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

    private void init() {
        if (!glfwInit()){
            System.out.println("GLFW failed to init!");
            System.exit(-1);
        }

        glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
        glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2);
        glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
        glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
        glfwCreateWindow(width, height, "Flappy Bird", NULL, NULL);
        if (window == NULL) {
            System.out.println("Could not create window");
            System.exit(-1);
        }

        GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
        glfwSetWindowPos(window, (vidmode.width() - width) /2, (vidmode.height() - height) /2);
        glfwMakeContextCurrent(window);
        glfwShowWindow(window);
    }

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

            if (glfwWindowShouldClose(window) == true){
                running = false;
            }
        }
    }

    private void update() {
        glfwPollEvents();
    }

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

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

任务:Main.Main()失败无法创建窗口

执行任务“:main.main()”失败。

进程“命令”c:/program files/java/jdk-16/bin/java.exe“以非零退出值-1结束

    null
    null

共有1个答案

储承
2023-03-14

好吧,所以问题很简单,我从来没有改变windows值

在长窗口设置为零之前

但我发现必须将其设置为GLFWCreateWindow:

glfwCreateWindow(width, height, "Flappy Bird", NULL, NULL);
window = glfwCreateWindow(width, height, "Flappy Bird", NULL, NULL);
 类似资料:
  • 我今天下载了LWJGL3,发现它几乎完全重写了。我查阅了一个关于如何创建窗口的教程,但我仍然有创建窗口的问题。 代码运行时没有问题:控制台中没有错误,但窗口没有显示!

  • 我在MacOS上使用Intellij。我对编程比较陌生,并从LWJGL网站上学习本教程。我遵循了所有的说明,并在VM选项中添加了-XStartonFirstThread。但是,每当我在IntelliJ中运行程序(HelloWorld.java),我就会看到停靠站中的java exec窗口,并得到“Hello LWJGL 3.2.3 build 13!”在控制台,但窗户打不开,我根本看不到窗户。

  • 我有两台显示器;创建 LWJGL 窗口时: 它总是出现在我的左侧屏幕上。是否有一个参数可以设置以更改它出现在哪个屏幕上,例如:

  • 我不熟悉使用LWJGL(一般来说Java也是如此),因此,我阅读了他们关于入门的页面,他们提供了一个Hello World程序示例。我自己尝试运行它,发现它出现以下错误:<代码>2020-03-18 10:20:02.145 java[19779:1119716]***由于未捕获的异常“nSinternalinconsistenceexception”而终止应用程序,原因:“[NSUndoMana

  • 我试图用Java/LWJGL做一个简单的游戏。我在学习一个在windows上制作的教程,我用的是Mac。我复制了他的代码来打开一个窗口字符,程序立即崩溃了,给了我一个很长很奇怪的错误,可能与指针有关(我实际上不知道)。下面是用于创建窗口的行,我使用该窗口的属性中定义了宽度和高度: 当我在mac上运行它时,它会给我以下错误:

  • 我在调整窗口大小时有问题。当我尝试调整窗口大小时,屏幕没有正确地改变。这是窗口的原始大小: 但是当我调整窗口的大小时,屏幕会变成这样: 每次调整窗口大小但仍然不能工作时,我都会调用updateProjectionMatrix()和glVievport()。 我的代码: