Можно ли отключить ограничение кадров в libGDX?

Более конкретно, настольное приложение libGDX-LWJGL. Существуют опции конфигурации, позволяющие отключить синхронизацию процессора и синхронизацию, но независимо от того, работает ли приложение со скоростью 60 кадров в секунду.

Это хорошо для всех практических применений - но из любопытства, если ничего другого, я хотел бы видеть, насколько высока частота кадров.

Ответ 1

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

Кроме того, убедитесь, что любое аппаратное vsync отключено на вашем графическом процессоре, если это возможно, как упоминалось в @RodHyde.

Ответ 2

Ответ зависит от скорости вашего процессора и видеокарты, но если вы попытаетесь настроить конфигурацию, как показано ниже, когда вы создаете приложение, и отключите vsync на вашей графической карте, то это должно сильно нажать на нее.

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;

Отключение vsync будет где-то в настройках вашей видеокарты. На моей карточке nVidia она отображается как "Вертикальная синхронизация" в параметрах. Он был настроен на "Адаптивный", ограничив частоту кадров 60 кадров в секунду, но после установки "Off" я увидел > 4000 кадров в секунду, как измерено fraps.

Ответ 3

cfg.useCPUSynch. Установка cfg.foregroundFPS на некоторое количество вместо этого сделала трюк для меня.