gpt4 book ai didi

java - LibGDX-libgdx 的意外计算

转载 作者:行者123 更新时间:2023-12-01 18:14:03 25 4
gpt4 key购买 nike

我最近遇到了 FPS 下降的问题(~40 FPS),当我搜索它在哪里时。我发现不是我,我所有的计算都是在 7 毫秒内完成的,这远远超出了 16 毫秒的限制。

这是我使用的代码:

long time = 0;
public void render(float delta)
{
System.out.println("since last frame : " +( System.currentTimeMillis()-time));
time = System.currentTimeMillis();

// Rendering...

System.out.println("render : " + (System.currentTimeMillis()-time));
}

“自上一帧以来”的时间约为 22 毫秒,“渲染”时间约为 7 毫秒。我只是不明白 libgdx 在这 15 毫秒内做了什么,或者这是否是我的错。

最佳答案

LibGDX 正在交换前后缓冲区。这需要等待GPU完成渲染。因此,无论您在 render() 中告诉 GPU 执行哪些尚未完成的操作,仍必须在下一次调用 render() 方法之前完成。被制作。

CPU 和 GPU 并行运行。例如当您调用 SpriteBatch#end() 时,它几乎会立即返回(如果它不必先等待其他操作完成)。但这并不意味着它确实被渲染了。它仅意味着它已指示 GPU 渲染您使用例如添加到批处理中的任何内容。 draw(...) 方法。

此渲染发生在后台缓冲区上,这是一个离屏图像。当您的 render() 方法完成时,此后缓冲区将与前缓冲区交换,以便屏幕显示您在 render() 方法中渲染的内容。它只能在 GPU 完成执行指令时交换这些缓冲区,因此如果尚未完成则需要等待。

关于java - LibGDX-libgdx 的意外计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30790612/

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