在libGDX中是否可以禁用帧速率限制?

17
更具体地说,这是一个桌面libGDX-LWJGL应用程序。有配置选项可以禁用CPU同步以及垂直同步,但无论如何,应用程序都以60fps运行。
对于所有实际用途来说,这都很好 - 但出于好奇心,我想看看帧速率能达到多高。
3个回答

42

Rode Hyde的答案已经不正确了,因为库中发生了变化。请尝试这个:

LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();
config.vSyncEnabled = false; // Setting to false disables vertical sync
config.foregroundFPS = 0; // Setting to 0 disables foreground fps throttling
config.backgroundFPS = 0; // Setting to 0 disables background fps throttling

此外,如@RodHyde所提到的,如果可能的话,请确保您GPU上的任何硬件垂直同步关闭。

1
400 fps,但现在box2d太快了。 - Boldijar Paul
@Paul 我建议你在 #libgdx (irc.freenode.net) 或者 libGDX 论坛 上提问。 - user711807

7
答案很大程度上取决于您的CPU和显卡速度,但如果您在创建应用程序时尝试以下配置,并在显卡上禁用垂直同步,则应该可以将其推到极限。
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
cfg.title = "Framerate test";
cfg.width = 1280;
cfg.height = 720;
cfg.fullscreen = false;  
cfg.useGL20 = false;
cfg.useCPUSynch = false;
cfg.forceExit = true;  
cfg.vSyncEnabled = false;

禁用垂直同步会在您的显卡设置中的某个地方。在我的nVidia 显卡上,它被列为选项中的“垂直同步”。它的默认值为“自适应”,将帧率限制在60fps左右,但是将其设置为“关闭”后,通过fraps测量到的帧率高达4000fps以上。


3

cfg.useCPUSynch 似乎已经被删除了。相反,将 cfg.foregroundFPS 设置为一个较大的数字对我有用。


这实际上应该是对@RodHyde答案的评论。从技术上讲,它是不正确的,因为OP希望完全禁用帧速限制。它也不完整,因为您没有提到vSyncEnabled和backgroundFPS。 - user711807

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接