gpt4 book ai didi

java - 移动窗口时OpenGL停止绘制lwjgl

转载 作者:行者123 更新时间:2023-12-01 13:00:00 27 4
gpt4 key购买 nike

所以基本上我想每次绘制,即使窗口移动,因为我使用增量时间来移动动画和其他东西。这意味着如果 opengl 停止,时间仍在继续,有时它会让玩家穿过墙壁并眨眼到其他地方:/如何解决这个问题?我已经尝试使用线程,但它不起作用(或者至少我编码错误)..

最佳答案

如果 deltaT 太大,您可以限制它。或者,如果您对渲染和移动有单独的调用(无论如何,我建议您这样做,这样您就可以在没有非常大的移动的情况下删除渲染帧),并且 deltaT 变得太大,请将其分解为几个较小的调用。

上限:

public void update(int deltaMs) {
if (deltaMs > 100) {
deltaMs = 100;
}
...

将渲染与更新分开并进行小更新:

public void update(int deltaMs) {
while(deltaMs > 100) {
updateImpl(100);
deltaMs -= 100;
}
updateImpl(deltaMs);
render();
}

您甚至可以结合使用这两种方法:

public void update(int deltaMs) {
// Cap at one second.
if (deltaMs > 1000) {
delatMs = 1000;
}

// Handle movements in small steps to avoid going through walls etc.
while(deltaMs > 100) {
updateImpl(100);
deltaMs -= 100;
}
updateImpl(deltaMs);

render();
}

关于java - 移动窗口时OpenGL停止绘制lwjgl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580245/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com