Java 不调用Display.update()会导致程序崩溃
我正在使用LWJGL为opengl中的游戏编写3d编辑器。我只希望编辑器在需要时渲染。但是,如果只渲染一次并继续调用Java 不调用Display.update()会导致程序崩溃,java,opengl,lwjgl,Java,Opengl,Lwjgl,我正在使用LWJGL为opengl中的游戏编写3d编辑器。我只希望编辑器在需要时渲染。但是,如果只渲染一次并继续调用Dislplay.update()图像会出现问题,如果只偶尔调用Dislplay.update(),而不是在while循环中,程序会停止响应,windows会将其关闭。有人知道这是为什么还是一个解决办法吗?我自己在玩了一会儿之后,准确地找到了答案。每次更新显示时,它都会交换缓冲区,以便每秒手动交换缓冲区更新一次,使其保持使用相同的缓冲区,或者渲染两次;每个缓冲区一次。 例如,如果使
Dislplay.update()
图像会出现问题,如果只偶尔调用Dislplay.update()
,而不是在while循环中,程序会停止响应,windows会将其关闭。有人知道这是为什么还是一个解决办法吗?我自己在玩了一会儿之后,准确地找到了答案。每次更新显示时,它都会交换缓冲区,以便每秒手动交换缓冲区更新一次,使其保持使用相同的缓冲区,或者渲染两次;每个缓冲区一次。例如,如果使用render()方法渲染图像,则可以执行以下操作:
render();
Display.swapBuffers();
render();
然后您将正常更新显示。这种解决方法仅在缓冲区交换为真正交换时有效。如果这是一个破坏性的闪电,你就不走运了。通过将完成的渲染复制到纹理中,并在空闲显示处理程序中仅将该纹理绘制到视口填充四边形中,可以避免这种情况。顺便说一句:你可以接受你自己的答案来标记问题的解决;当然,你不会得到任何荣誉。