使用 GLFW (LWJGL) 创建 window 时出现问题

Problem with creating a window using GLFW (LWJGL)

我正在尝试使用 GLFW 创建 window。 Window 已创建, 但经过几次尝试后,window 确实需要很长时间才能创建。

https://drive.google.com/file/d/1zq4IEjcSIJxy5wnXWLrGe46ptHMbKM5R/view?usp=sharing

我找不到任何解决方案,也不知道这是什么原因造成的。

这是我正在使用的代码:

    import org.lwjgl.glfw.GLFWVidMode;
    import org.lwjgl.opengl.GL;
    
    import static org.lwjgl.opengl.GL11.*;
    import static org.lwjgl.glfw.GLFW.*;
    
    public class Main {
        public static void main(String[] args) {
             System.out.println("0");
             if(!glfwInit()) {
                 throw  new IllegalStateException("GLFW couldn't be initialized!");
             }
             System.out.println("1");
    
             long window = glfwCreateWindow(450,800,"Test #1",0,0);
    
             if(window == 0) {
                throw new IllegalStateException("GLFW failed to create a window!");
             }
             System.out.println("2");
    
            GLFWVidMode videoMode = glfwGetVideoMode(glfwGetPrimaryMonitor());
    
            glfwSetWindowPos(window,(videoMode.width()-450)/2,(videoMode.height()-800)/2);
    
            glfwMakeContextCurrent(window);
    
            GL.createCapabilities();
    
            float i = 2;
            float speed = 1;
    
            System.out.println("3");
             while(!glfwWindowShouldClose(window)) {
                 
                 if(i> 253 || i < 1) 
                     speed *= -1;
                 
                 i+=speed;
                 
                 glClear(GL_COLOR_BUFFER_BIT);
    
                 glBegin(GL_QUADS);
                    glColor4f(0.38f,(i%255)/255,(i%255)/255,1.0f);
                     glVertex2f(-0.5f,0.5f);
                     glVertex2f(0.5f,0.5f);
                     glVertex2f(0.5f, -0.5f);
                     glVertex2f(-0.5f,-0.5f);
                glEnd();
                 glfwSwapBuffers(window);
                 glfwPollEvents();
    
             }
             System.out.println("4");
             glfwDestroyWindow(window);
             glfwTerminate();
             System.out.println("5");
    
        }
    }

程序的输出是

0
//Now for a really long time nothing
1
2
3

所以看起来初始化 glfw 需要很长时间,但我不知道如何修复它。

经过一些研究,我发现问题与 USB 输入设备有关 - 在我的例子中 - Corsair k55 键盘。

从我了解到的一些文章和 github 个问题中,该错误也是由其他一些设备引起的(在许多情况下是 Corsair,但不仅如此)。

修复方法是:

  • 找出导致错误的设备(通过拔掉插头,我就是这样做的)
  • 现在(我发现它是我的 k55)我必须更新 ICUE(驱动程序)。

希望对您有所帮助 ;)