ID #72655

如何控制游戏中的FPS

    有人说游戏就是动画,就象电影一样将一幅幅画面展现给我们!

   游戏中有个关键的部分叫做FPS

     在计算机图像领域中,“FPS”是词组“Frames Per Second”的缩写。“Frames Per Second”在计算机图像范畴内被翻译为:“每秒传输帧数”。更确切的解释,就是“每秒中填充图像的帧数(帧/秒)“。这里的“FPS”就是我们常在CS游戏里说的“FPS”值,也可以理解为我们常说的“刷新率(Hz)”。

   而当刷新率太低时我们肉眼都能感觉到屏幕的闪烁,不连贯,对图像显示效果和视觉感观产生不好的影响。在FPS游戏例如CS中也是一样的,游戏里的每一帧就是一幅静止画面,而“FPS”值越高也就是“刷新率”越高,每秒填充的帧数就越多,那么画面就越流畅。

   为什么我们要专门涉及到FPS ,有人说使用线程Thread.sleep(一定时间)再描绘不就可以了吗!

   但实际游戏中不是这样的 游戏地图的载入,图象的描绘都要消耗时间。有时多有时少,在这样的情况下我们使用Thread.sleep定时描绘会出现画面卡,不连贯的现象!

     在此我们给出一个简单的控制FPS的方法,很简单就是判断间隔时间,时间<1000/FPS,那么等待一定时间,直到>=1000/FPS,那么继续!在此使用Funmobile公司的一段代码做为演示!!

Thread lThread=new Thread();//创立线程

 lThread.start();//线程启动

public void run()
    {
        Thread pThreadTemp = Thread.currentThread();
        do
        {
            if(pThreadTemp != lThread)// 判断当前线程是否为主线程 若不是返回
                break;
            long lTimeStart = System.currentTimeMillis();
            System.out.PRintln("run");  
           

 repaint(0, 0, lWidth, lHeight);
            serviceRepaints(); //这是强制描绘 这2个描绘每次消耗的时间不一定相等


            long lTimeTaken = System.currentTimeMillis() - lTimeStart;

//获取时间间隔
            if(lTimeTaken < (long)60) //若小于1000/FPS,等待剩余时间
                try


2011-08-31 18:59
阅读:
I'm VC , Just U know Y
本站部分文章来源于互联网,版权归原作者所有。

延伸阅读:

浅析android下如何通过jni监控wifi网络连接、dhcpcd执行和power电源控制

Java落在Oracle控制下前途难料

Java落在Oracle控制下前途难料

Set是如何实现"没有重复元素"

如何学习Java呢?教教你!~