JAVA游戏开发计算显示FPS
2014-03-03 13:37
477 查看
今天写游戏需要计算FPS,就在网上搜到了Loon的一个java 游戏计算FPS的类,修改了一下如下(版权属原作者):
简单的使用方法:
首先,初始化一个FPSMaker实例
然后,在需要计算FPS时初始化以下当前时间:
最后,在游戏循环中计算和显示当前游戏帧速:
Over!
package com.px.FPS; import java.text.DecimalFormat; /** * */ /** * <p>Title: LoonFramework</p> * <p>Description:</p> * <p>Copyright: Copyright (c) 2007</p> * <p>Company: LoonFramework</p> * @author chenpeng * @email ceponline@yahoo.com.cn * @version 0.1 * */ public class CFPSMaker { /** * 设定动画运行多少帧后统计一次帧数 */ public static final int FPS = 8; /** * 换算为运行周期 * 单位: ns(纳秒) */ public static final long PERIOD = (long) (1.0 / FPS * 1000000000); /** * FPS最大间隔时间,换算为1s = 10^9ns * 单位: ns */ public static long FPS_MAX_INTERVAL = 1000000000L; /** * 实际的FPS数值 */ private double nowFPS = 0.0; /** * FPS累计用间距时间 * in ns */ private long interval = 0L; private long time; /** * 运行桢累计 */ private long frameCount = 0; /** * 格式化小数位数 */ private DecimalFormat df = new DecimalFormat("0.0"); /** * 制造FPS数据 * */ public void makeFPS() { frameCount++; interval += PERIOD; //当实际间隔符合时间时。 if (interval >= FPS_MAX_INTERVAL) { //nanoTime()返回最准确的可用系统计时器的当前值,以毫微秒为单位 long timeNow = System.nanoTime(); // 获得到目前为止的时间距离 long realTime = timeNow - time; // 单位: ns //换算为实际的fps数值 nowFPS = ((double) frameCount / realTime) * FPS_MAX_INTERVAL; //变更数值 frameCount = 0L; interval = 0L; time = timeNow; } } public long getFrameCount() { return frameCount; } public void setFrameCount(long frameCount) { this.frameCount = frameCount; } public long getInterval() { return interval; } public void setInterval(long interval) { this.interval = interval; } public double getNowFPS() { return nowFPS; } public void setNowFPS(double nowFPS) { this.nowFPS = nowFPS; } public long getTime() { return time; } public void setTime(long time) { this.time = time; } public String getFPS() { return df.format(nowFPS); } }
简单的使用方法:
首先,初始化一个FPSMaker实例
CFPSMaker fpsMaker; fpsMaker = new CFPSMaker();
然后,在需要计算FPS时初始化以下当前时间:
fpsMaker.setNowFPS(System.nanoTime());
最后,在游戏循环中计算和显示当前游戏帧速:
fpsMaker.makeFPS(); GameManager.drawFPS(fpsMaker.getFPS() + " FPS");
Over!
相关文章推荐
- Java游戏开发中怎样才能获得更快的FPS?
- Java游戏开发中怎样才能获得更快的FPS?
- Java游戏开发中怎样才能获得更快的FPS? 推荐
- JAVA游戏开发之FPS精准控制
- Java游戏开发中怎样才能获得更快的FPS?
- 显示游戏FPS帧率的几种计算方式
- JAVA 游戏开发之——FPS(帧频刷新率)精准控制
- Java游戏开发中怎样才能获得更快的FPS?
- Java开发,AWT控件的中文显示成乱码的解决方法
- Java开发的游戏之三 坦克大战 完整源代码
- JAVA游戏编程之三----j2se 手机游戏入门开发--俄罗斯方块_1
- Java游戏开发日志(2007-6-7)
- java web开发中 显示图片的问题
- Java(Android)游戏开发框架LGame-0.2.7发布
- greenfoot开发java游戏
- 我的第一个java游戏开发项目
- Android游戏开发cocos2d-x调用Java层代码
- JAVA开发--游戏24点
- 实验三 Java猜数字游戏开发
- Java开发中的时间对象的显示与处理