libGDX游戏开发之修改游戏帧数FPS(十三)

libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm…国内用libgdx比较少,多数情况需要去官网和google找资料,相互学习的可以加我联系方式。

FPS百科:

FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS是测量用于保存、显示动态视频的信息数量。每秒钟帧数越多,所显示的动作就会越流畅。通常,要避免动作不流畅的最低是30。

我们知道帧数越多越流畅、体验更好,但是这对CPU(核显)、GPU性能有比较高的要求。例如在游戏中FPS=60,女朋友发信息来回复时,切出游戏(窗口焦点不在游戏),这时可以降低FPS减少性能浪费。
libgdx中,通过阅读源码我们知道默认的FPS为每秒60帧,即使焦点不在窗口也是60帧。

/** Target framerate when the window is in the foreground. The CPU sleeps as needed. Use 0 to never sleep. **/public int foregroundFPS = 60;/** Target framerate when the window is not in the foreground. The CPU sleeps as needed. Use 0 to never sleep, -1 to not* render. **/public int backgroundFPS = 60;

例如设置玩游戏时60帧,切出游戏时30帧,Main代码如下:

public class DesktopLauncher {public static void main (String[] arg) {LwjglApplicationConfiguration config = new LwjglApplicationConfiguration();// 默认帧率 60config.foregroundFPS=60;// 切出时帧率为30config.backgroundFPS=30;new LwjglApplication(new MyGdxGame(), config);}
}

渲染代码如下:

public class MyGdxGame extends ApplicationAdapter {SpriteBatch batch;Texture img;Stage stage;Label fpsLabel;@Overridepublic void create() {batch = new SpriteBatch();img = new Texture("badlogic.jpg");stage = new Stage();Label.LabelStyle style = new Label.LabelStyle(new BitmapFont(), Color.WHITE);fpsLabel = new Label("FPS", style);fpsLabel.setPosition(10, 450);stage.addActor(fpsLabel);// 手动调整CPU帧率 默认 60Gdx.graphics.setForegroundFPS(90);}@Overridepublic void render() {ScreenUtils.clear(1, 0, 0, 1);batch.begin();batch.draw(img, 0, 0);batch.end();fpsLabel.setText("FPS: " + Gdx.graphics.getFramesPerSecond());stage.draw();}@Overridepublic void dispose() {batch.dispose();img.dispose();}
}

效果:在游戏中,我手动调节的90不生效,就去Discord社区问了下人。

焦点不在游戏时降到30是正确的:

Discord回答:

lingkang — 今天01:57
hi
My graphics card is 1660 ti
The FPS 90 I set is invalid, still 60
How do I set high FPS?James — 今天02:13
If your monitor is 60Hz, you must disable vsync (LWJGL2: config.vSyncEnabled = false; LWJGL3: config.useVsync(false); - might also have to change driver settings but hopefully not) to go beyond 60fps.
For LWJGL2 you also have to do config.foregroundFPS = 0 because it's by default limited to 60.

在create中修改一下,FPS修改不超过60可以不关闭。

Gdx.graphics.useVSync(false);


通过阅读源码:

也可以通过Gdx.graphics.setForegroundFPS(-1);放飞自我:1900FPS 显卡威力!

以前经常看源码,看多脑壳疼,懒得看。遇到问题经常search白嫖,现在遇到问题还是看一圈源码算啦!

libGDX游戏开发之修改游戏帧数FPS(十三)相关推荐

  1. libGDX游戏开发之打包游戏(十二)

    libGDX游戏开发之打包游戏(十二) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goog ...

  2. 基于cocos2d-x的快速的游戏开发--回合制游戏

    2019独角兽企业重金招聘Python工程师标准>>> #基于cocos2d-x的快速的游戏开发--回合制游戏 开发时间:3天 开发工具:cocos2d-x和cocostudio 开 ...

  3. Unity 2D游戏开发教程之游戏中精灵的跳跃状态

    Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...

  4. Threejs系列--9游戏开发--沙漠赛车游戏【基础场景渲染】

    Threejs系列--9游戏开发--沙漠赛车游戏[基础场景渲染] 序言 准备工作 目录结构 代码一览 index.js代码 index.css代码 Camera.js代码 Sizes.js代码 App ...

  5. Threejs系列--11游戏开发--沙漠赛车游戏【初步加载地面】

    Threejs系列--11游戏开发--沙漠赛车游戏[初步加载地面] 序言 目录结构 代码一览 world/index.js代码 world/Floor.js代码 materials/Floor.js代 ...

  6. Threejs系列--10游戏开发--沙漠赛车游戏【基础事件处理器】

    Threejs系列--9游戏开发--沙漠赛车游戏[基础事件处理器] 序言 目录结构 代码一览 Time.js代码 EventEmitter.js代码 Sizes.js代码 Application.js ...

  7. Threejs系列--16游戏开发--沙漠赛车游戏【loading与start切换效果】

    Threejs系列--16游戏开发--沙漠赛车游戏[loading与start切换效果] 序言 目录结构 新增依赖 代码一览 world/index.js代码 代码解读 运行结果 序言 本章将使页面中 ...

  8. Threejs系列--14游戏开发--沙漠赛车游戏【纹理贴图之loading加载】

    Threejs系列--14游戏开发--沙漠赛车游戏[纹理贴图之loading加载] 序言 目录结构 代码一览 world/index.js代码 Application.js代码 代码解读 运行结果 序 ...

  9. Pascal游戏开发入门(三):游戏对象管理

    Pascal游戏开发入门(三):游戏对象管理 游戏中有很多类对象,例如:角色,敌人,NPC,陷阱,子弹,门等等.跟踪并处理它们之间的交互是一个有难度的事情.为了尽可能简化并使之容易维护,本节将尝试使用 ...

最新文章

  1. WebAssembly 的由来
  2. 《软件加密与解密》第三版学习日志一
  3. 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
  4. ListCtrl控件着色
  5. Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
  6. Go实现 爬虫v0.2
  7. 达梦DISQL执行脚本方法总结
  8. Invalid parameter passed to C runtime function
  9. 济南新旧动能转换起步区(济南先行区)Echarts图json文件
  10. perfect forward secrecy
  11. osi模型:七层模型介绍_什么是OSI(开放系统互连)模型?
  12. 《深入理解redis》之三:内存管理的建议与技巧
  13. greenplum常用的gp_toolkit监控语句
  14. String字符串的最大长度是多少?
  15. 【Mac新手必看】苹果macOS桌面壁纸设置技巧
  16. 微信支付重复回调,java微信支付回调问题
  17. 阅读文献“Language Models are Unsupervised Multitask Learner”(GPT-2)
  18. BZOJ 2716 Violet 3 天使玩偶
  19. PHP 第三方登录 (QQ登录)
  20. java连连看倒计时_0053 游戏连连看增加倒计时和暂停功能和提示功能

热门文章

  1. C#宝石闪电战【高仿,推荐】
  2. SMT贴片加工生产流程
  3. macOS快速复制文件夹路径
  4. 2030影院群站CMS10影视整站源码+WAP自适应模板
  5. 游戏AI:只是AI间的游戏,还是游戏的未来?
  6. java字符串分割方法.split()的详细用法
  7. python人机猜拳游戏代码_实用宝典|如何用Python实现人机猜拳小游戏
  8. 一枚亲斤手对中大SYSUMSClub的puzzle的解题记录(writeup)(2021-10)(G2T1me)
  9. 关于伸缩列表的ExpandableListView+CheckBox
  10. 星际无限:协议实验室在Filecoin经济中的参与(二)