【问题标题】:not calling Display.update() causes program to crash不调用 Display.update() 会导致程序崩溃
【发布时间】:2011-07-14 14:41:13
【问题描述】:

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

【问题讨论】:

    标签: java opengl lwjgl


    【解决方案1】:

    我确实在玩了一会儿之后自己想通了。每次更新显示时,它都会交换缓冲区,因此要么在每秒更新一次时手动交换缓冲区,以便它继续使用相同的缓冲区,要么渲染两次;每个缓冲区一次。
    例如,如果你有一个 render() 方法来渲染你的图像,你会这样做:

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

    然后你就可以正常更新显示了。

    【讨论】:

    • 这种解决方法只有在缓冲区交换是真正的交换时才有效。如果它是破坏性的 blit,那么你就不走运了。通过将完成的渲染复制到纹理中来避免这种情况,并且在空闲显示处理程序中只需将此纹理绘制到视口填充四边形。 BTW:您可以接受自己的答案来标记正在解决的问题;当然,你不会获得任何声誉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多