Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不调用Display.update()会导致程序崩溃_Java_Opengl_Lwjgl - Fatal编程技术网

Java 不调用Display.update()会导致程序崩溃

Java 不调用Display.update()会导致程序崩溃,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在使用LWJGL为opengl中的游戏编写3d编辑器。我只希望编辑器在需要时渲染。但是,如果只渲染一次并继续调用Dislplay.update()图像会出现问题,如果只偶尔调用Dislplay.update(),而不是在while循环中,程序会停止响应,windows会将其关闭。有人知道这是为什么还是一个解决办法吗?我自己在玩了一会儿之后,准确地找到了答案。每次更新显示时,它都会交换缓冲区,以便每秒手动交换缓冲区更新一次,使其保持使用相同的缓冲区,或者渲染两次;每个缓冲区一次。 例如,如果使

我正在使用LWJGL为opengl中的游戏编写3d编辑器。我只希望编辑器在需要时渲染。但是,如果只渲染一次并继续调用
Dislplay.update()
图像会出现问题,如果只偶尔调用
Dislplay.update()
,而不是在while循环中,程序会停止响应,windows会将其关闭。有人知道这是为什么还是一个解决办法吗?

我自己在玩了一会儿之后,准确地找到了答案。每次更新显示时,它都会交换缓冲区,以便每秒手动交换缓冲区更新一次,使其保持使用相同的缓冲区,或者渲染两次;每个缓冲区一次。
例如,如果使用render()方法渲染图像,则可以执行以下操作:

render();
Display.swapBuffers();
render();

然后您将正常更新显示。

这种解决方法仅在缓冲区交换为真正交换时有效。如果这是一个破坏性的闪电,你就不走运了。通过将完成的渲染复制到纹理中,并在空闲显示处理程序中仅将该纹理绘制到视口填充四边形中,可以避免这种情况。顺便说一句:你可以接受你自己的答案来标记问题的解决;当然,你不会得到任何荣誉。