一種優(yōu)化游戲畫面的方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及移動(dòng)終端技術(shù)領(lǐng)域,尤其涉及一種優(yōu)化游戲畫面的方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著移動(dòng)通信技術(shù)的快速發(fā)展,越來(lái)越多的用戶在使用著智能手機(jī)等移動(dòng)通信終端。這些移動(dòng)通信終端不僅可以進(jìn)行通常的通話、短消息等通訊,還可以執(zhí)行游戲軟件、觀看動(dòng)畫和電影、視頻等,移動(dòng)通信終端的用途得到擴(kuò)展。
[0003]目前,對(duì)于游戲等大量使用GPU繪圖的應(yīng)用而言,智能手機(jī)在運(yùn)行時(shí)會(huì)大量使用GPU0而GPU在繪圖負(fù)載較大的情況下,GPU的繪圖時(shí)間會(huì)變長(zhǎng),而負(fù)載較輕的情況下,繪圖時(shí)間會(huì)變短。當(dāng)大量使用GPU時(shí),會(huì)出現(xiàn)繪圖幀率變化范圍大,繪圖的流暢性變差,導(dǎo)致游戲畫面差的問(wèn)題。
[0004]即現(xiàn)有技術(shù)中由于GPU在繪圖負(fù)載不同時(shí)其繪圖時(shí)間不同,導(dǎo)致繪圖幀率變化范圍大,繪圖流暢性變差,游戲畫面差的問(wèn)題。
[0005]因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
【發(fā)明內(nèi)容】
[0006]本發(fā)明要解決的技術(shù)問(wèn)題在于,針對(duì)現(xiàn)有技術(shù)的不足,提供一種優(yōu)化游戲畫面的方法及系統(tǒng),通過(guò)本方法,其可以解決現(xiàn)有技術(shù)中的由于GPU在繪圖負(fù)載不同時(shí)其繪圖時(shí)間不同,導(dǎo)致繪圖幀率變化范圍大,繪圖流暢性變差,游戲畫面差的問(wèn)題;實(shí)現(xiàn)繪圖幀率穩(wěn)定,游戲畫面更流暢。
[0007]為了解決上述技術(shù)問(wèn)題,本發(fā)明所采用的技術(shù)方案如下:
一種優(yōu)化游戲畫面的方法,其中,所述方法包括:
A、終端檢測(cè)識(shí)別是否進(jìn)入游戲程序,當(dāng)進(jìn)入游戲程序,發(fā)送繪圖請(qǐng)求;
B、接收繪圖請(qǐng)求,根據(jù)繪圖請(qǐng)求繪圖,動(dòng)態(tài)優(yōu)化繪圖幀率,輸出游戲畫面。
[0008]所述步驟B中的根據(jù)繪圖請(qǐng)求繪圖,動(dòng)態(tài)優(yōu)化繪圖幀率包括:
B1、進(jìn)行繪圖;
B2、記錄幀率:比較當(dāng)前幀率f與幀率預(yù)設(shè)最小判定值d的大小,若當(dāng)前幀率f大于幀率預(yù)設(shè)最小判定值山則記錄當(dāng)前幀率,并統(tǒng)計(jì)幀率個(gè)數(shù)N=N+1 ;其中N表示統(tǒng)計(jì)幀率個(gè)數(shù),初始值為O ;
B3、選取最大幀率:將統(tǒng)計(jì)幀率個(gè)數(shù)N與預(yù)設(shè)閥值C比較,當(dāng)統(tǒng)計(jì)幀率個(gè)數(shù)N小于等于預(yù)設(shè)閥值C時(shí),執(zhí)行步驟B5 ;當(dāng)統(tǒng)計(jì)幀率個(gè)數(shù)N大于預(yù)設(shè)閥值C時(shí),選取最大幀率fmax,執(zhí)行步驟B4 ;
B4、更新預(yù)設(shè)最大幀率:采用步驟B3中的最大幀率fmax更新預(yù)設(shè)最大幀率fsystem ;B5、繪圖睡眠:將當(dāng)前幀率f與預(yù)設(shè)最大幀率fsystem進(jìn)行比較,若當(dāng)前幀率f大于預(yù)設(shè)最大幀率fsystem,則繪圖睡眠一段時(shí)間t,執(zhí)行BI。
[0009]所述步驟B2中幀率f為一定時(shí)間內(nèi)繪圖次數(shù),其表達(dá)式為:f=int (S/T);
其中,T為當(dāng)前繪圖和上一次繪圖的時(shí)間間隔,S為時(shí)間段,S和T的單位為ms,int ()表示取整運(yùn)算。
[0010]所述步驟B3還包括:
B31、判斷統(tǒng)計(jì)幀率個(gè)數(shù)N與預(yù)設(shè)閥值C的大小,如果統(tǒng)計(jì)幀率個(gè)數(shù)N大于預(yù)設(shè)閥值C,則執(zhí)行步驟B32,如果統(tǒng)計(jì)幀率個(gè)數(shù)N小于等于預(yù)設(shè)閥值C,則返回步驟B5 ;
B32、將記錄的N個(gè)幀率等分為M組,每組幀率的統(tǒng)計(jì)順序?yàn)檫B續(xù),計(jì)算每組幀率的和,其中,M為正整數(shù);
B33、將M組幀率的和進(jìn)行比較,選取幀率和最大的組;
B34、將幀率和最大組中的幀率進(jìn)行比較,選取最大幀率fmax。
[0011]所述步驟B3還包括:將最大幀率fmax與預(yù)設(shè)最小幀率fmin進(jìn)行比較,如果最大幀率fmax小于預(yù)設(shè)最小幀率fmin,則將預(yù)設(shè)最小幀率賦予最大幀率,即fmax=fmin,所述預(yù)設(shè)最小幀率fmin大于幀率預(yù)設(shè)最小判定值d。
[0012]所述步驟B4中還包括:將最大幀率fmax與預(yù)設(shè)最大幀率fsystem進(jìn)行比較,如果 fmax=fsystem,貝Ij fsystem=fmax+fadd ;如果 fmax 不等于 fsystem, fsystem=fmax,其中fadd為預(yù)先設(shè)定值,其為正整數(shù)。
[0013]所述步驟B5中,所述一段時(shí)間t=l/fsystem-l/f。
[0014]一種優(yōu)化游戲畫面的系統(tǒng),其中,所述系統(tǒng)包括:
一識(shí)別單元,用于終端檢測(cè)識(shí)別是否進(jìn)入游戲程序,當(dāng)進(jìn)入游戲程序,發(fā)送繪圖請(qǐng)求; 一處理單元,用于接收繪圖請(qǐng)求,根據(jù)繪圖請(qǐng)求繪圖,動(dòng)態(tài)優(yōu)化繪圖幀率,輸出游戲畫面。
[0015]所述優(yōu)化游戲畫面的的系統(tǒng),所述處理單元包括:
一繪圖模塊,用于進(jìn)行繪圖;
一統(tǒng)計(jì)模塊,用于比較當(dāng)前幀率與幀率預(yù)設(shè)最小判定值的大小,并記錄當(dāng)前幀率和統(tǒng)計(jì)幀率個(gè)數(shù);
一選取模塊,用于將統(tǒng)計(jì)幀率個(gè)數(shù)與預(yù)設(shè)閥值比較,當(dāng)統(tǒng)計(jì)幀率個(gè)數(shù)大于預(yù)設(shè)閥值,選取最大幀率;
一更新模塊,用于更新預(yù)設(shè)最大幀率;
一睡眠模塊,用于判斷當(dāng)前幀率與預(yù)設(shè)最大幀率的大小,并進(jìn)行繪圖睡眠。
[0016]所述優(yōu)化游戲畫面的系統(tǒng),所述處理單元,其還包括:
一計(jì)算模塊,用于將統(tǒng)計(jì)模塊統(tǒng)計(jì)的幀率等分為若干組,計(jì)算每組幀率的和,將若干組幀率的和進(jìn)行比較,選取幀率和最大的組,將幀率和最大組的幀率進(jìn)行比較,選取最大幀率;
一調(diào)整模塊,用于判斷計(jì)算模塊選取最大幀率與預(yù)設(shè)最小幀率的大小,當(dāng)最大幀率小于預(yù)設(shè)最小幀率時(shí),將預(yù)設(shè)最小幀率賦予最大幀率。
[0017]有益效果:與現(xiàn)有技術(shù)相比,本發(fā)明所提供的優(yōu)化游戲畫面的方法及系統(tǒng)。其首先統(tǒng)計(jì)幀率大于幀率預(yù)設(shè)最小判定值,當(dāng)統(tǒng)計(jì)個(gè)數(shù)大于預(yù)設(shè)閥值時(shí),選取統(tǒng)計(jì)幀率的最大幀率更新預(yù)設(shè)最大幀率,并實(shí)時(shí)判斷當(dāng)前幀率與預(yù)設(shè)最大幀率的大小,若當(dāng)前幀率大于預(yù)設(shè)最大幀率,則繪圖運(yùn)算睡眠一段時(shí)間;實(shí)現(xiàn)了動(dòng)態(tài)優(yōu)化繪圖幀率。并且通過(guò)睡眠繪圖運(yùn)算來(lái)調(diào)整繪圖幀率,使得繪圖幀率趨于平穩(wěn),避免了 GPU在繪圖負(fù)載不同時(shí)其繪圖時(shí)間不同,繪圖幀率變化范圍大,繪圖流暢性變差,游戲畫面差的問(wèn)題。
【附圖說(shuō)明】
[0018]圖1為本發(fā)明優(yōu)化游戲畫面的方法較佳實(shí)施例的流程圖。
[0019]圖2為本發(fā)明優(yōu)化游戲畫面的方法中繪圖幀率優(yōu)化的流程圖。
[0020]圖3為本發(fā)明優(yōu)化游戲畫面的系統(tǒng)功能原理框圖。
【具體實(shí)施方式】
[0021]本發(fā)明提供優(yōu)化游戲畫面的方法和系統(tǒng),為使本發(fā)明的目的、技術(shù)方案及效果更加清楚、明確,以下對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0022]下面結(jié)合附圖,通過(guò)對(duì)實(shí)施例的描述,對(duì)
【發(fā)明內(nèi)容】
作進(jìn)一步說(shuō)明。
[0023]請(qǐng)參見圖1,圖1為本發(fā)明優(yōu)化游戲畫面的方法較佳實(shí)施例的流程圖。如圖所示,所述方法包括以下步驟:
A、終端檢測(cè)識(shí)別是否進(jìn)入游戲程序,當(dāng)進(jìn)入游戲程序,發(fā)送繪圖請(qǐng)求;
B、接收繪圖請(qǐng)求,根據(jù)繪圖請(qǐng)求繪圖,動(dòng)態(tài)優(yōu)化繪圖幀率,輸出游戲畫面。
[0024]具體地,在本實(shí)施中,終端檢測(cè)識(shí)別是否進(jìn)入游戲程序可以檢測(cè)當(dāng)前操作系統(tǒng)中發(fā)生的輸入輸出事件,根據(jù)所述輸入輸出事件判斷是否進(jìn)入游戲程序。
[0025]其也可以輸出用于提示用戶當(dāng)前運(yùn)行環(huán)境的性能參數(shù)的懸浮窗,通過(guò)檢測(cè)所述懸浮窗是否被觸發(fā)執(zhí)行優(yōu)化判斷所述用戶界面是否進(jìn)入游戲程序。
[0026]其還可以通過(guò)獲取當(dāng)前操作系統(tǒng)中啟動(dòng)的進(jìn)程的名稱,通過(guò)所述進(jìn)程的名稱判斷用戶是否進(jìn)入游戲程序。具體的可以,通過(guò)判斷所述進(jìn)程的名稱是否與預(yù)先建立的列表中的進(jìn)程名稱相同。
[0027]具體的,本實(shí)施例中,所述步驟B中的根據(jù)繪圖請(qǐng)求繪圖,動(dòng)態(tài)優(yōu)化繪圖幀率包括:
B1、進(jìn)行繪圖;
B2、記錄幀率:比較當(dāng)前幀率f與幀率預(yù)設(shè)最小判定值d的大小,若當(dāng)前幀率f大于幀率預(yù)設(shè)最小判定值山則記錄當(dāng)前幀率,并統(tǒng)計(jì)幀率個(gè)數(shù)N=N+1 ;
其中,N表示統(tǒng)計(jì)幀率個(gè)數(shù),初始值為0,幀率f為一定時(shí)間內(nèi)繪圖次數(shù)。
[0028]具體地,在本實(shí)施例中,幀率f表示100ms之內(nèi)的繪圖次數(shù),即 f=int (1000/T);
其中,T為當(dāng)前繪圖和上一次繪圖的時(shí)間間隔,單位為ms,int ()表示取整運(yùn)算;在其他實(shí)施例中,幀率f可以表示其他時(shí)間段內(nèi)的繪圖次數(shù),這里不做限制,僅舉例說(shuō)明,如100ms,500ms,1500ms,2000ms 等。
[0029]具體地,所述幀率預(yù)設(shè)最小判定值d為預(yù)先設(shè)定,其可以為20fps。
[0030]B3、選取最大幀率:將統(tǒng)計(jì)幀率個(gè)數(shù)N與預(yù)設(shè)閥值C比較,當(dāng)統(tǒng)計(jì)幀率個(gè)數(shù)N小于等于預(yù)設(shè)閥值C時(shí),執(zhí)行步驟B5;當(dāng)統(tǒng)計(jì)幀率個(gè)數(shù)N大于預(yù)設(shè)閥值C時(shí),選取最大幀率fmax,清空步驟B2的記錄信息,并執(zhí)行步驟B4。
[0031]具體的,本實(shí)施例中,選取最大幀率可以但不限于采用如下過(guò)程,首先判斷統(tǒng)計(jì)幀率個(gè)數(shù)N與預(yù)設(shè)閥值C的大小,如果統(tǒng)計(jì)幀率個(gè)數(shù)N小于等于預(yù)設(shè)閥值C,則返回繪圖運(yùn)算;如果統(tǒng)計(jì)幀率個(gè)數(shù)N大于預(yù)設(shè)閥值C ;將N個(gè)幀率等分為M組,每組幀率的統(tǒng)計(jì)順序?yàn)檫B續(xù),計(jì)算每組幀率的和;將M組幀率的和進(jìn)行比較,選取幀率和最大的組;將幀率和最大組中的幀率進(jìn)行比較,選取幀率最大的記為最大幀率fmax。這樣可以使得選取的最大幀率與統(tǒng)計(jì)幀率的差率較小,提高最大幀率的穩(wěn)定性,避免所選最大幀率為跳幀幀率的問(wèn)題。
[0032]進(jìn)一步,在本實(shí)施例中,閥值C為預(yù)先設(shè)定,其可以為300。
[0033]進(jìn)一步,在本實(shí)施例中,M為正整數(shù),其可以為5。
[0034]進(jìn)一步,所述差率可以但不限于采用最大幀率與統(tǒng)計(jì)幀率的差的絕對(duì)值與最大幀率的比值。
[0035]具體地,所述選取最大幀率其還可以采用如下過(guò)程:首先判斷統(tǒng)計(jì)幀率個(gè)數(shù)N與預(yù)設(shè)閥值C的大小,如果統(tǒng)計(jì)幀率個(gè)數(shù)N小于等于預(yù)設(shè)閥值C,則返回繪圖運(yùn)算;如果統(tǒng)計(jì)幀率個(gè)數(shù)N大于預(yù)設(shè)閥值C ;將N個(gè)幀率等分為M組,每組幀率的統(tǒng)計(jì)順序?yàn)檫B續(xù),計(jì)算每組幀率的平均值組幀率的平均值進(jìn)行比較,選平均值最大幀率為最大幀率fmax ;其可以保證最大幀率的穩(wěn)定性,通過(guò)最大幀率調(diào)整繪圖睡眠,保證繪圖的流暢性,從而保證游戲畫面的流暢。
[0036]進(jìn)一步,由于最大幀率用來(lái)更新預(yù)設(shè)最大幀率,而在系統(tǒng)中,預(yù)設(shè)最大幀率要大于等于預(yù)設(shè)最小幀率。從而將最大幀率fmax與預(yù)設(shè)最小幀率