【问题标题】:LWJGL 3: window doesn't show upLWJGL 3:​​窗口不显示
【发布时间】:2018-06-27 09:08:38
【问题描述】:

我今天下载了 LWJGL 3,发现它几乎被完全重写了。我查阅了有关如何创建窗口的教程,但仍然无法创建窗口。

代码运行没有问题:控制台没有错误,但窗口不显示!

希望你能帮助我,我搜索了很多 LWJGL 3 教程,但它们似乎很老,所以我决定在这里问我的问题。

这是我的代码:

//编辑: 更改了我的代码,所以一切都在一个线程中运行,但它仍然不起作用。甚至 System.out.println() 也不起作用。没有显示控制台输出!

//重要提示:我刚刚意识到这可能是 GLFW 中的一个错误(我正在使用 Linux)!

package net.newworld.test;

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

import org.lwjgl.Version;
import org.lwjgl.glfw.GLFWVidMode;

public class Main {
	
	private static long window;
	private static int width = 1280;
	private static int height = 800;
	
	private static void init() {
		
		glfwInit();
		
		System.out.println("Initializing LWJGL...");
		System.out.println("LWJGL Version: "+ Version.getVersion());
		
		glfwWindowHint(GLFW_VISIBLE, GL_FALSE); //Set window visible after creation
		
		window = glfwCreateWindow(width, height, "New World", 0, 0);
		
		GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor()); //Get primary monitor
		
		glfwSetWindowPos(window, (vidmode.width() - width) / 2, (vidmode.height() - height) / 2); //Set window position
		
		glfwMakeContextCurrent(window); //Make OpenGL contect current
		
		glfwShowWindow(window); //Show window
	}
	
	public static void main(String[] args) {
		init();
	}
}

【问题讨论】:

  • 你在哪里调用函数run()
  • @Poriferous 因为我实现了 Runnable
  • 这可能是问题所在。你不应该让 OpenGL/GLFW 运行另一个线程。将所有内容集中在一个线程中。尝试摆脱Runnable 接口,重写您的代码,看看是否有助于解决您的问题。
  • 我更改了我的代码(见上文),但仍然无法正常工作。
  • 你忘记调用glfwInit()函数了。

标签: java opengl lwjgl


【解决方案1】:

问题可能是您忘记添加窗口 proc 循环(阻塞)

public static void main(String[] args) {
    init();
    while (!glfwWindowShouldClose(window)) {
        glfwWaitEvents();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 2020-11-24
    • 2011-11-10
    相关资源
    最近更新 更多