我正在尝试使用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需要很长时间,但我不知道如何修复它。
经过一些研究,我发现这个问题与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
提前谢了。