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

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

尹承泽
2023-03-14

我正在尝试使用GLFW创建一个窗口。窗口已创建,但经过几次尝试,创建窗口需要很长时间。

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需要很长时间,但我不知道如何修复它。

共有1个答案

谢和颂
2023-03-14

经过一些研究,我发现这个问题与USB输入设备有关——在我的例子中是海盗k55键盘。

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

修复是:

  • 找出导致错误的设备(通过拔下插头,我就是这样做的)

希望有帮助;)

 类似资料:
  • 当试图显示帧时,在当前线程中没有当前OpenGL上下文。它出现的行可能是GL.createCapabilities();(在私有方法Window.init中)我认为它失败了,因为glcontext没有初始化或类似的东西。 代码如下: 跟踪:

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

  • 我正在努力熟悉Java的LWJGL库,我一直在线学习一些教程,我似乎无法渲染模型。 我使用的是OpenGL 2.1(这似乎非常过时,但我不知道如何更新它,我知道它与你的硬件捆绑在一起,如果有人对我的规格感兴趣,我使用的是MacBook Pro 2017型号) 如果有人能看看我的代码,告诉我哪里做错了,我会非常感激!(现在呈现的只是一个红色窗口) 从我研究过的来源来看,这段代码应该会产生一个由两个三

  • 我正在尝试使用GLFW3创建一个窗口。当我在我的桌面上做这件事时,效果很好。在我的笔记本电脑上,它无法创建窗口,程序崩溃。删除glfwWindowHint()调用可以防止崩溃,但我的代码无法工作,因为我使用了错误的openGL版本。以下是窗口代码: 这可能与我的台式机有NVidia图形,而我的笔记本电脑有集成图形有关吗? 更新:它在调用glfwSwapBuffers()时崩溃,我将glfw错误65

  • E/AndroidRuntime:致命异常:main process:com.luteraa.luteraaesports,pid:6355 java.lang.nullpointerException:试图在com.luteraa.luteraaesports.bgmicategoryAdapter.OpenDialog(bgmicategoryAdapter.java.access$000(b

  • 提前谢了。