国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

如何控制游戲中的FPS

2019-11-18 16:17:40
字體:
來源:轉載
供稿:網友

    有人說游戲就是動畫,就象電影一樣將一幅幅畫面展現給我們!

   游戲中有個關鍵的部分叫做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.           

 repaint(0, 0, lWidth, lHeight);
            serviceRepaints(); //這是強制描繪 這2個描繪每次消耗的時間不一定相等


            long lTimeTaken = System.currentTimeMillis() - lTimeStart;

//獲取時間間隔
            if(lTimeTaken < (long)60) //若小于1000/FPS,等待剩余時間
                try
                {
                    synchronized(this)
                    {
                        Thread.sleep((long)60 - lTimeTaken);
                    }
                }
                catch(InterruptedException e)
                {
                    System.out.println("error=".concat(String.valueOf(String.valueOf(e))));
                }
        } while(true);
    }


這樣做可以使畫面刷新穩定,畫面流暢連貫!感謝丁丁最近一段時間對我學習的幫助!

本文僅代表個人觀點,大家有好的建議或方案可以到論壇提出!

轉載注明出處 J2MEDEV

(出處:http://m.survivalescaperooms.com)



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潍坊市| 镇康县| 东台市| 丹江口市| 会泽县| 永昌县| 苗栗市| 云安县| 铁岭市| 南溪县| 嘉兴市| 衡东县| 高陵县| 香格里拉县| 大田县| 尤溪县| 道真| 花莲县| 霍城县| 仁怀市| 浙江省| 香格里拉县| 六盘水市| 蚌埠市| 桦甸市| 河源市| 南和县| 中牟县| 丁青县| 绥江县| 聊城市| 南召县| 福清市| 弋阳县| 青岛市| 措勤县| 天峻县| 沁水县| 荣成市| 双牌县| 黔西|