欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法及其系統(tǒng)與流程

文檔序號(hào):11691004閱讀:615來(lái)源:國(guó)知局
虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法及其系統(tǒng)與流程

本發(fā)明涉及虛擬現(xiàn)實(shí)技術(shù)領(lǐng)域,尤其涉及一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法及其系統(tǒng)。



背景技術(shù):

隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,越來(lái)越多的虛擬現(xiàn)實(shí)軟件出現(xiàn)在人們的生活中。作為虛擬現(xiàn)實(shí)軟件,沉浸感一直是用戶(hù)體驗(yàn)的核心。目前,制約用戶(hù)感官體驗(yàn)的最大因素就是暈動(dòng)癥,而造成暈動(dòng)癥的最直接原因就是虛擬現(xiàn)實(shí)軟件的平均運(yùn)行幀率無(wú)法滿(mǎn)足規(guī)定標(biāo)準(zhǔn),從而引發(fā)了軟件延遲。目前虛擬現(xiàn)實(shí)軟件測(cè)試領(lǐng)域缺少對(duì)于軟件幀率的測(cè)試方案。

目前,在unity3d引擎中,基于底層源代碼,實(shí)現(xiàn)了對(duì)渲染數(shù)據(jù)的實(shí)時(shí)統(tǒng)計(jì),該統(tǒng)計(jì)數(shù)據(jù)剔除了editor模式中的額外開(kāi)銷(xiāo),僅僅包含攝像機(jī)視錐體截面視圖的實(shí)時(shí)渲染數(shù)據(jù),即實(shí)際數(shù)據(jù)反映了在生成exe文件或者包文件時(shí),軟件在運(yùn)行時(shí)的真實(shí)渲染情況。

具體地,在unity3d引擎的游戲視圖(gameview)窗口,點(diǎn)擊右上方的狀態(tài)(stats)按鈕,即可顯示一個(gè)重疊視窗與實(shí)時(shí)渲染統(tǒng)計(jì)數(shù)據(jù)。統(tǒng)計(jì)的數(shù)據(jù)根據(jù)構(gòu)建目標(biāo)的不同而顯示不同的內(nèi)容。對(duì)于以測(cè)試幀率為構(gòu)建目標(biāo)的情況,統(tǒng)計(jì)數(shù)據(jù)則包括每幀的時(shí)間和fps(framespersecond,每秒傳輸幀數(shù))。每幀的時(shí)間即處理和渲染一個(gè)應(yīng)用框架(以及由此產(chǎn)生的fps)的耗時(shí)。fps計(jì)算時(shí)統(tǒng)計(jì)的幀數(shù)數(shù)量,只包括攝像機(jī)視錐體截面視圖更新和渲染的幀,不包括在編輯器中繪制場(chǎng)景視圖,檢視窗口和其他僅編輯器進(jìn)程的時(shí)間。

但上述方案存在下述缺點(diǎn):

缺點(diǎn)1:引擎沒(méi)有提供渲染數(shù)據(jù)統(tǒng)計(jì)窗口的對(duì)外數(shù)據(jù)接口,無(wú)法從編輯器或者引擎外部調(diào)用渲染數(shù)據(jù)統(tǒng)計(jì)窗口中的數(shù)據(jù)信息。

缺點(diǎn)2:測(cè)試人員只有在白盒測(cè)試時(shí),才能查看軟件幀率相關(guān)信息,而大部分企業(yè)無(wú)法提供測(cè)試人員軟件的源代碼。導(dǎo)致在黑盒測(cè)試時(shí),測(cè)試人員無(wú)法進(jìn)行軟件的幀率測(cè)試。

缺點(diǎn)3:引擎的渲染數(shù)據(jù)統(tǒng)計(jì)窗口提供的幀率數(shù)據(jù)是視圖渲染的實(shí)時(shí)數(shù)據(jù),但是,想要衡量一個(gè)虛擬現(xiàn)實(shí)軟件的運(yùn)行幀率是否符合標(biāo)準(zhǔn)規(guī)范,需要通過(guò)軟件運(yùn)行的平均幀率進(jìn)行衡量,才能更加精準(zhǔn)的對(duì)軟件質(zhì)量進(jìn)行合理的評(píng)估。并且,測(cè)試過(guò)程中無(wú)法自動(dòng)對(duì)數(shù)據(jù)進(jìn)行匯總計(jì)算,收集有用的測(cè)試數(shù)據(jù)用于數(shù)據(jù)分析,并生成測(cè)試報(bào)表。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明所要解決的技術(shù)問(wèn)題是:提出一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法及其系統(tǒng),可對(duì)虛擬現(xiàn)實(shí)軟件的幀率進(jìn)行檢測(cè)。

為了解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法,包括:

根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀;

根據(jù)預(yù)設(shè)的圖形渲染速率,依次對(duì)所述幀進(jìn)行更新;

根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率;

根據(jù)所述幀率以及所述數(shù)據(jù)采集次數(shù),計(jì)算得到幀率平均值;

將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)。

本發(fā)明還涉及一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試系統(tǒng),包括:

第一獲取模塊,用于根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀;

更新模塊,用于根據(jù)預(yù)設(shè)的圖形渲染速率,依次對(duì)所述幀進(jìn)行更新;

第一計(jì)算模塊,用于根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率;

第二計(jì)算模塊,用于根據(jù)所述幀率以及所述數(shù)據(jù)采集次數(shù),計(jì)算得到幀率平均值;

比對(duì)模塊,用于將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)。

本發(fā)明的有益效果在于:根據(jù)兩個(gè)幀之間的幀數(shù)增量以及兩個(gè)幀之間的更新間隔時(shí)間,即可計(jì)算出兩個(gè)幀中較后的幀的幀率,由此即可計(jì)算出各個(gè)幀的幀率,然后根據(jù)所計(jì)算出的各個(gè)幀的幀率以及總的測(cè)試幀數(shù),計(jì)算出幀率平均值,將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),即可得知虛擬現(xiàn)實(shí)軟件的幀率是否符合標(biāo)準(zhǔn)。

附圖說(shuō)明

圖1為本發(fā)明實(shí)施例一的方法流程圖;

圖2為本發(fā)明實(shí)施例二的方法流程圖;

圖3為本發(fā)明實(shí)施例三的方法流程圖;

圖4為本發(fā)明一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖;

圖5為實(shí)施例五的系統(tǒng)結(jié)構(gòu)示意圖。

標(biāo)號(hào)說(shuō)明:

1、第一獲取模塊;2、更新模塊;3、第一計(jì)算模塊;4、第二計(jì)算模塊;

5、比對(duì)模塊;6、第一構(gòu)建模塊;7、第二構(gòu)建模塊;8、第一發(fā)送模塊;

9、建立模塊;10、第二發(fā)送模塊;11、存儲(chǔ)模塊;12、返回模塊;

31、第一獲取單元;32、第二獲取單元;33、第一計(jì)算單元;34、第二計(jì)算單元;35、第三獲取單元;36、第四獲取單元;37、第三計(jì)算單元;38、第四計(jì)算單元;

51、第五獲取單元;52、比對(duì)單元;53、生成單元。

具體實(shí)施方式

為詳細(xì)說(shuō)明本發(fā)明的技術(shù)內(nèi)容、所實(shí)現(xiàn)目的及效果,以下結(jié)合實(shí)施方式并配合附圖詳予說(shuō)明。

本發(fā)明最關(guān)鍵的構(gòu)思在于:根據(jù)幀數(shù)增量與幀更新的更新間隔時(shí)間,計(jì)算幀的幀率。

名詞解釋?zhuān)?/p>

幀率:是用于測(cè)量顯示幀數(shù)的量度,其測(cè)量單位為每秒顯示的幀數(shù)framespersecond,簡(jiǎn)稱(chēng)fps或者赫茲(hz)。

請(qǐng)參閱圖1,一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法,包括:

根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀;

根據(jù)預(yù)設(shè)的圖形渲染速率,依次對(duì)所述幀進(jìn)行更新;

根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率;

根據(jù)所述幀率以及所述數(shù)據(jù)采集次數(shù),計(jì)算得到幀率平均值;

將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)。

從上述描述可知,本發(fā)明的有益效果在于:通過(guò)計(jì)算出各幀的幀率,后續(xù)將幀率與標(biāo)準(zhǔn)值進(jìn)行比對(duì)即可得知幀率是否符合標(biāo)準(zhǔn)。

進(jìn)一步地,所述“根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率”具體為:

獲取所述更新的過(guò)程的更新初始時(shí)間,同時(shí)獲取獲取所述更新初始時(shí)間的第一時(shí)間損耗;

獲取所述幀中第一幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第二時(shí)間損耗;

根據(jù)所述更新初始時(shí)間與第一幀的更新開(kāi)始時(shí)間,計(jì)算得到第一幀更新的更新時(shí)間間隔;

根據(jù)所述第一幀更新的更新時(shí)間間隔、第一時(shí)間損耗和第二時(shí)間損耗,計(jì)算得到第一幀的幀率;

獲取上一幀的更新完成時(shí)間,同時(shí)獲取獲取所述更新完成時(shí)間的第三時(shí)間損耗;

獲取當(dāng)前幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第四時(shí)間損耗;

根據(jù)所述更新完成時(shí)間和更新開(kāi)始時(shí)間,計(jì)算得到當(dāng)前幀更新的更新時(shí)間間隔;

根據(jù)當(dāng)前幀相對(duì)上一幀的幀數(shù)增量、所述更新時(shí)間間隔、第三時(shí)間損耗和第四時(shí)間損耗,計(jì)算得到當(dāng)前幀的幀率。

由上述描述可知,在幀率的計(jì)算中引入獲取時(shí)間的動(dòng)作的時(shí)間損耗,提高幀率計(jì)算的準(zhǔn)確性。

進(jìn)一步地,所述“根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀”之前,進(jìn)一步包括:

在虛擬現(xiàn)實(shí)軟件中構(gòu)建服務(wù)端,并創(chuàng)建服務(wù)端套接字;

在外部的測(cè)試框架中構(gòu)建客戶(hù)端,并創(chuàng)建客戶(hù)端套接字;

客戶(hù)端根據(jù)所述服務(wù)端的ip地址和端口號(hào),向服務(wù)端發(fā)送連接請(qǐng)求;

服務(wù)端接收所述連接請(qǐng)求后,建立與客戶(hù)端的通信連接;

客戶(hù)端發(fā)送幀率測(cè)試請(qǐng)求至服務(wù)端,所述幀率測(cè)試請(qǐng)求的數(shù)據(jù)包括預(yù)設(shè)的數(shù)據(jù)采集次數(shù)和預(yù)設(shè)的圖形渲染速率。

進(jìn)一步地,所述“計(jì)算得到所述幀中各幀的幀率”之后,進(jìn)一步包括:

將所述各幀的幀率存儲(chǔ)至數(shù)據(jù)列表中;

服務(wù)端將所述數(shù)據(jù)列表返回至客戶(hù)端。

由上述描述可知,通過(guò)創(chuàng)建服務(wù)端和客戶(hù)端實(shí)現(xiàn)測(cè)試參數(shù)和測(cè)試結(jié)果的交互,最終測(cè)試結(jié)果可保存在客戶(hù)端中,后續(xù)可被其他終端或軟件進(jìn)行調(diào)用。

進(jìn)一步地,所述“將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)”具體為:

獲取幀率標(biāo)準(zhǔn)均值;

分別將所述幀率、幀率平均值與所述幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),得到比對(duì)結(jié)果;

根據(jù)所述比對(duì)結(jié)果,生成測(cè)試報(bào)表。

由上述描述可知,通過(guò)將幀率、幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)衡量,可更加精準(zhǔn)地對(duì)軟件質(zhì)量進(jìn)行合理的評(píng)估,還可根據(jù)幀率數(shù)據(jù)和幀率比對(duì)數(shù)據(jù)進(jìn)行匯總計(jì)算,收集有用的測(cè)試數(shù)據(jù)用于數(shù)據(jù)分析,并生成測(cè)試報(bào)表。

請(qǐng)參照?qǐng)D4,本發(fā)明還提出一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試系統(tǒng),包括:

第一獲取模塊,用于根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀;

更新模塊,用于根據(jù)預(yù)設(shè)的圖形渲染速率,依次對(duì)所述幀進(jìn)行更新;

第一計(jì)算模塊,用于根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率;

第二計(jì)算模塊,用于根據(jù)所述幀率以及所述數(shù)據(jù)采集次數(shù),計(jì)算得到幀率平均值;

比對(duì)模塊,用于將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)。

進(jìn)一步地,所述第一計(jì)算模塊包括:

第一獲取單元,用于獲取所述更新的過(guò)程的更新初始時(shí)間,同時(shí)獲取獲取所述更新初始時(shí)間的第一時(shí)間損耗;

第二獲取單元,用于獲取所述幀中第一幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第二時(shí)間損耗;

第一計(jì)算單元,用于根據(jù)所述更新初始時(shí)間與第一幀的更新開(kāi)始時(shí)間,計(jì)算得到第一幀更新的更新時(shí)間間隔;

第二計(jì)算單元,用于根據(jù)所述第一幀更新的更新時(shí)間間隔、第一時(shí)間損耗和第二時(shí)間損耗,計(jì)算得到第一幀的幀率;

第三獲取單元,用于獲取上一幀的更新完成時(shí)間,同時(shí)獲取獲取所述更新完成時(shí)間的第三時(shí)間損耗;

第四獲取單元,用于獲取當(dāng)前幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第四時(shí)間損耗;

第三計(jì)算單元,用于根據(jù)所述更新完成時(shí)間和更新開(kāi)始時(shí)間,計(jì)算得到當(dāng)前幀更新的更新時(shí)間間隔;

第四計(jì)算單元,用于根據(jù)當(dāng)前幀相對(duì)上一幀的幀數(shù)增量、所述更新時(shí)間間隔、第三時(shí)間損耗和第四時(shí)間損耗,計(jì)算得到當(dāng)前幀的幀率。

進(jìn)一步地,還包括:

第一構(gòu)建模塊,用于在虛擬現(xiàn)實(shí)軟件中構(gòu)建服務(wù)端,并創(chuàng)建服務(wù)端套接字;

第二構(gòu)建模塊,用于在外部的測(cè)試框架中構(gòu)建客戶(hù)端,并創(chuàng)建客戶(hù)端套接字;

第一發(fā)送模塊,用于客戶(hù)端根據(jù)所述服務(wù)端的ip地址和端口號(hào),向服務(wù)端發(fā)送連接請(qǐng)求;

建立模塊,用于服務(wù)端接收所述連接請(qǐng)求后,建立與客戶(hù)端的通信連接;

第二發(fā)送模塊,用于客戶(hù)端發(fā)送幀率測(cè)試請(qǐng)求至服務(wù)端,所述幀率測(cè)試請(qǐng)求的數(shù)據(jù)包括預(yù)設(shè)的數(shù)據(jù)采集次數(shù)和預(yù)設(shè)的圖形渲染速率。

進(jìn)一步地,還包括:

存儲(chǔ)模塊,用于將所述各幀的幀率存儲(chǔ)至數(shù)據(jù)列表中;

返回模塊,用于服務(wù)端將所述數(shù)據(jù)列表返回至客戶(hù)端。

進(jìn)一步地,所述比對(duì)模塊包括:

第五獲取單元,用于獲取幀率標(biāo)準(zhǔn)均值;

比對(duì)單元,用于分別將所述幀率、幀率平均值與所述幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),得到比對(duì)結(jié)果;

生成單元,用于根據(jù)所述比對(duì)結(jié)果,生成測(cè)試報(bào)表。

實(shí)施例一

請(qǐng)參照?qǐng)D1,本發(fā)明的實(shí)施例一為:一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法,適用于oculus平臺(tái)的基于開(kāi)發(fā)引擎的虛擬現(xiàn)實(shí)軟件,包括如下步驟:

s11:根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀。

s12:根據(jù)預(yù)設(shè)的圖形渲染速率,依次對(duì)所述幀進(jìn)行更新;優(yōu)選地,將圖形渲染速率的值設(shè)置為1,使虛擬現(xiàn)實(shí)軟件的圖形渲染速率保持最優(yōu)模式。

s13:根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率。

s14:根據(jù)所述幀率以及所述數(shù)據(jù)采集次數(shù),計(jì)算得到幀率平均值。

s15:將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì);具體地,獲取幀率標(biāo)準(zhǔn)均值;分別將所述幀率、幀率平均值與所述幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),得到比對(duì)結(jié)果;根據(jù)所述比對(duì)結(jié)果,生成測(cè)試報(bào)表。

本實(shí)施例根據(jù)兩個(gè)幀之間的幀數(shù)增量以及兩個(gè)幀之間的更新間隔時(shí)間,即可計(jì)算出兩個(gè)幀中較后的幀的幀率,由此即可計(jì)算出各個(gè)幀的幀率,然后根據(jù)所計(jì)算出的各個(gè)幀的幀率以及總的測(cè)試幀數(shù),計(jì)算出幀率平均值,將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),即可得知虛擬現(xiàn)實(shí)軟件的幀率是否符合標(biāo)準(zhǔn)。

實(shí)施例二

請(qǐng)參照?qǐng)D2,本實(shí)施例是實(shí)施例的進(jìn)一步拓展,相同之處不再累述,區(qū)別在于,步驟s11之前,還包括如下步驟:

s01:在虛擬現(xiàn)實(shí)軟件中構(gòu)建服務(wù)端,并創(chuàng)建服務(wù)端套接字;

s02:在外部的測(cè)試框架中構(gòu)建客戶(hù)端,并創(chuàng)建客戶(hù)端套接字;

s03:客戶(hù)端根據(jù)所述服務(wù)端的ip地址和端口號(hào),向服務(wù)端發(fā)送連接請(qǐng)求;

s04:服務(wù)端接收所述連接請(qǐng)求后,建立與客戶(hù)端的通信連接;

s05:客戶(hù)端發(fā)送幀率測(cè)試請(qǐng)求至服務(wù)端,所述幀率測(cè)試請(qǐng)求的數(shù)據(jù)包括預(yù)設(shè)的數(shù)據(jù)采集次數(shù)和預(yù)設(shè)的圖形渲染速率。所述幀率測(cè)試請(qǐng)求中還可以包括調(diào)用指令,根據(jù)調(diào)用指令調(diào)用對(duì)應(yīng)實(shí)施例一方法的測(cè)試流程進(jìn)行幀率的計(jì)算。

進(jìn)一步地,步驟s13得到各幀的幀率之后,將所述各幀的幀率存儲(chǔ)至數(shù)據(jù)列表中,然后服務(wù)端將所述數(shù)據(jù)列表返回至客戶(hù)端。

在本實(shí)施例中,測(cè)試程序(即實(shí)施例一的方法對(duì)應(yīng)的程序)和服務(wù)端可以通過(guò)掛載的方式集成在虛擬現(xiàn)實(shí)軟件中,在軟件運(yùn)行時(shí)創(chuàng)建服務(wù)端socket,在外部的測(cè)試框架中創(chuàng)建客戶(hù)端socket,通過(guò)socket通信實(shí)現(xiàn)測(cè)試參數(shù)、測(cè)試結(jié)果的交互,即采用c/s結(jié)構(gòu)設(shè)計(jì)模式,通過(guò)socket通信的方式,實(shí)現(xiàn)了測(cè)試框架與虛擬現(xiàn)實(shí)軟件間的數(shù)據(jù)交互。

實(shí)施例三

請(qǐng)參照?qǐng)D3,本實(shí)施例是實(shí)施例步驟s13的進(jìn)一步拓展,包括如下步驟:

s131:獲取所述更新的過(guò)程的更新初始時(shí)間,同時(shí)獲取獲取所述更新初始時(shí)間的第一時(shí)間損耗;例如,獲取更新的過(guò)程的更新初始時(shí)間為a,獲取a時(shí),函數(shù)的執(zhí)行存在時(shí)間損耗,假設(shè)為a’,那么同時(shí)也獲取a’。

s132:獲取所述幀中第一幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第二時(shí)間損耗;假設(shè)第一幀的更新開(kāi)始時(shí)間為b,同時(shí)獲取獲取b的函數(shù)的執(zhí)行時(shí)間損耗b’。

s133:根據(jù)所述更新初始時(shí)間與第一幀的更新開(kāi)始時(shí)間,計(jì)算得到第一幀更新的更新時(shí)間間隔;具體地,第一幀更新的更新時(shí)間間隔=第一幀的更新開(kāi)始時(shí)間b-更新初始時(shí)間a。

s134:根據(jù)所述第一幀更新的更新時(shí)間間隔、第一時(shí)間損耗和第二時(shí)間損耗,計(jì)算得到第一幀的幀率;由于第一幀的幀數(shù)增量即為1,因此,第一幀的幀率=1/(b-a-a’-b’)。

s135:獲取上一幀的更新完成時(shí)間,同時(shí)獲取獲取所述更新完成時(shí)間的第三時(shí)間損耗;假設(shè)上一幀的更新完成時(shí)間為c,對(duì)應(yīng)的時(shí)間損耗為c’。

s136:獲取當(dāng)前幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第四時(shí)間損耗;假設(shè)當(dāng)前幀的更新開(kāi)始時(shí)間為d,對(duì)應(yīng)的時(shí)間損耗為d’。

s137:根據(jù)所述更新完成時(shí)間和更新開(kāi)始時(shí)間,計(jì)算得到當(dāng)前幀更新的更新時(shí)間間隔;具體地,當(dāng)前幀更新的更新時(shí)間間隔=當(dāng)前幀的更新開(kāi)始時(shí)間d-上一幀的更新完成時(shí)間c。

s138:根據(jù)當(dāng)前幀相對(duì)上一幀的幀數(shù)增量、所述更新時(shí)間間隔、第三時(shí)間損耗和第四時(shí)間損耗,計(jì)算得到當(dāng)前幀的幀率;若為一幀一幀依次進(jìn)行更新,則當(dāng)前幀相對(duì)上一幀的幀數(shù)增量為1,因此,當(dāng)前幀的幀率=1/(d-c-c’-a’)。繼續(xù)執(zhí)行步驟s135,重復(fù)執(zhí)行多次之后,即可計(jì)算出參與測(cè)試的各幀的幀率。

在實(shí)際運(yùn)用中,當(dāng)對(duì)一定數(shù)量的幀進(jìn)行更新時(shí),需要先對(duì)這些幀進(jìn)行大致的渲染,然后對(duì)第一幀進(jìn)行細(xì)致的渲染和繪制,第一幀更新完后再對(duì)第二幀進(jìn)行細(xì)致的渲染和繪制,依次類(lèi)推。因此,第一幀更新的更新時(shí)間間隔即用于進(jìn)行整體的大致渲染以及第一幀的細(xì)致渲染,后續(xù)每一幀更新的更新時(shí)間間隔即用于進(jìn)行該幀的細(xì)致渲染。同時(shí),在實(shí)際運(yùn)用中,函數(shù)的執(zhí)行需要時(shí)間,具體地,創(chuàng)建stopwatch()實(shí)例,該實(shí)例用于統(tǒng)計(jì)代碼執(zhí)行的時(shí)間損耗。在計(jì)算幀更新的時(shí)間間隔時(shí),通過(guò)調(diào)用stopwatch()實(shí)例的start方法和stop方法截取計(jì)算過(guò)程中的時(shí)間損耗并記錄。本實(shí)施例在幀率的計(jì)算中引入了獲取時(shí)間動(dòng)作所造成的時(shí)間損耗,使得計(jì)算結(jié)果更加精確。

實(shí)施例四

本實(shí)施例為對(duì)應(yīng)上述實(shí)施例的一具體應(yīng)用場(chǎng)景。

虛擬現(xiàn)實(shí)軟件啟動(dòng)時(shí),掛載的腳本組件分別調(diào)用socket()創(chuàng)建tcp套接口,bind()綁定地址和端口,listen()轉(zhuǎn)換主動(dòng)套接口為被動(dòng)套接口完成初始化服務(wù)器,并阻塞等待客戶(hù)端的連接請(qǐng)求。

測(cè)試框架在完成客戶(hù)端socket初始化后,通過(guò)服務(wù)器的地址和端口,調(diào)用connect()向服務(wù)器發(fā)送連接請(qǐng)求,并阻塞等待服務(wù)器應(yīng)答。服務(wù)器回復(fù)應(yīng)答并阻塞等待客戶(hù)端發(fā)送請(qǐng)求數(shù)據(jù)后,客戶(hù)端同樣回復(fù)一個(gè)連接成功的應(yīng)答,此時(shí)客戶(hù)端和服務(wù)器建立通信連接。

完成測(cè)試框架與虛擬現(xiàn)實(shí)軟件之間的通信連接后,從測(cè)試框架發(fā)送幀率測(cè)試請(qǐng)求(包括調(diào)用指令、預(yù)設(shè)的數(shù)據(jù)采集次數(shù)和預(yù)設(shè)的圖形渲染速率),掛載在虛擬現(xiàn)實(shí)軟件上的服務(wù)端socket接收到請(qǐng)求后,根據(jù)調(diào)用指令調(diào)用測(cè)試程序進(jìn)行幀率數(shù)據(jù)采集并返回?cái)?shù)據(jù)列表。期間,測(cè)試框架的客戶(hù)端socket阻塞等待服務(wù)器應(yīng)答。測(cè)試程序完成數(shù)據(jù)的采集后,通過(guò)服務(wù)端socket將數(shù)據(jù)列表發(fā)送給測(cè)試框架的客戶(hù)端socket??蛻?hù)端調(diào)用close()向socket服務(wù)端發(fā)送中斷連接請(qǐng)求,socket服務(wù)端接收到請(qǐng)求后,中斷連接。

其中,測(cè)試程序被調(diào)用后,接收服務(wù)端socket傳遞的測(cè)試參數(shù)(包括預(yù)設(shè)的數(shù)據(jù)采集次數(shù)和預(yù)設(shè)的圖形渲染速率),對(duì)數(shù)據(jù)以及變量進(jìn)行初始化。根據(jù)傳遞的參數(shù)設(shè)置采集幀率數(shù)據(jù)的次數(shù),并初始化上一幀更新的結(jié)束時(shí)間。通過(guò)調(diào)用application類(lèi)可以訪(fǎng)問(wèn)虛擬現(xiàn)實(shí)軟件運(yùn)行時(shí)的部分?jǐn)?shù)據(jù),設(shè)置靜態(tài)屬性targetframerate的值為1,使虛擬現(xiàn)實(shí)軟件的圖形渲染速率保持最優(yōu)模式。

幀更新時(shí),創(chuàng)建stopwatch類(lèi)的微妙級(jí)高精度計(jì)時(shí)器實(shí)例,該實(shí)例可以測(cè)量一個(gè)時(shí)間間隔的運(yùn)行時(shí)間。通過(guò)調(diào)用time類(lèi)的realtimesincestartup函數(shù)獲取當(dāng)前時(shí)間并作為當(dāng)前幀的開(kāi)始時(shí)間。函數(shù)的執(zhí)行存在時(shí)間損耗,通過(guò)微妙級(jí)高精度計(jì)時(shí)器實(shí)例獲取該時(shí)間損耗,并記錄。通過(guò)上一幀更新結(jié)束時(shí)間與當(dāng)前幀的更新開(kāi)始時(shí)間計(jì)算幀更新的間隔時(shí)間。

根據(jù)幀率計(jì)算公式,由于每幀的幀數(shù)增量為1,通過(guò)幀更新的時(shí)間間隔,計(jì)算當(dāng)前幀的運(yùn)行幀率,具體地,幀率=幀數(shù)增量/(當(dāng)前幀更新開(kāi)始時(shí)間-上一幀更新結(jié)束時(shí)間-當(dāng)前幀更新開(kāi)始時(shí)間的損耗時(shí)間-上一幀更新結(jié)束時(shí)間的損耗時(shí)間)。完成幀率計(jì)算后,調(diào)用time類(lèi)的realtimesincestartup函數(shù)獲取當(dāng)前時(shí)間并作為當(dāng)前幀的更新結(jié)束時(shí)間。通過(guò)計(jì)時(shí)器實(shí)例測(cè)量在獲取當(dāng)前幀的更新結(jié)束時(shí)間時(shí)代碼運(yùn)行的時(shí)間損耗并記錄。

根據(jù)傳入的參數(shù),完成指定的數(shù)據(jù)采集次數(shù)后,數(shù)據(jù)將被存儲(chǔ)在指定的空數(shù)據(jù)組中,用于外部調(diào)用。

服務(wù)端socket返回json數(shù)據(jù)格式的數(shù)據(jù)組給測(cè)試框架的客戶(hù)端socket,并通過(guò)jsonconvert類(lèi)的deserializeobject函數(shù)對(duì)包含了數(shù)據(jù)組的json字符串進(jìn)行反序列化處理。解析后的數(shù)據(jù)中除了包含幀率數(shù)據(jù)組,還包含了數(shù)據(jù)的數(shù)量信息,通過(guò)這些信息計(jì)算幀率數(shù)據(jù)的平均值。

完成幀率平均值計(jì)算后,測(cè)試框架連接數(shù)據(jù)庫(kù),提取數(shù)據(jù)庫(kù)中的標(biāo)準(zhǔn)數(shù)據(jù)表,該表記錄了用于衡量測(cè)試結(jié)果的標(biāo)準(zhǔn)信息。數(shù)據(jù)組中的幀率數(shù)據(jù)一一與標(biāo)準(zhǔn)數(shù)據(jù)進(jìn)行匹配,統(tǒng)計(jì)出測(cè)試報(bào)表所需的信息,包含了幀率數(shù)據(jù)通過(guò)數(shù),幀率數(shù)據(jù)未通過(guò)數(shù),幀率均值,數(shù)據(jù)通過(guò)率等信息。最后,測(cè)試框架調(diào)用報(bào)告接口,通過(guò)傳遞這些信息,生成對(duì)應(yīng)的測(cè)試報(bào)表。

實(shí)施例五

請(qǐng)參照?qǐng)D5,本實(shí)施例是對(duì)應(yīng)上述實(shí)施例的一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試系統(tǒng),包括:

第一獲取模塊1,用于根據(jù)預(yù)設(shè)的數(shù)據(jù)采集次數(shù),獲取對(duì)應(yīng)數(shù)量的幀;

更新模塊2,用于根據(jù)預(yù)設(shè)的圖形渲染速率,依次對(duì)所述幀進(jìn)行更新;

第一計(jì)算模塊3,用于根據(jù)所述幀中相鄰幀的更新時(shí)間間隔,計(jì)算得到所述幀中各幀的幀率;

第二計(jì)算模塊4,用于根據(jù)所述幀率以及所述數(shù)據(jù)采集次數(shù),計(jì)算得到幀率平均值;

比對(duì)模塊5,用于將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì)。

進(jìn)一步地,所述第一計(jì)算模塊3包括:

第一獲取單元31,用于獲取所述更新的過(guò)程的更新初始時(shí)間,同時(shí)獲取獲取所述更新初始時(shí)間的第一時(shí)間損耗;

第二獲取單元32,用于獲取所述幀中第一幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第二時(shí)間損耗;

第一計(jì)算單元33,用于根據(jù)所述更新初始時(shí)間與第一幀的更新開(kāi)始時(shí)間,計(jì)算得到第一幀更新的更新時(shí)間間隔;

第二計(jì)算單元34,用于根據(jù)所述第一幀更新的更新時(shí)間間隔、第一時(shí)間損耗和第二時(shí)間損耗,計(jì)算得到第一幀的幀率;

第三獲取單元35,用于獲取上一幀的更新完成時(shí)間,同時(shí)獲取獲取所述更新完成時(shí)間的第三時(shí)間損耗;

第四獲取單元36,用于獲取當(dāng)前幀的更新開(kāi)始時(shí)間,同時(shí)獲取獲取所述更新開(kāi)始時(shí)間的第四時(shí)間損耗;

第三計(jì)算單元37,用于根據(jù)所述更新完成時(shí)間和更新開(kāi)始時(shí)間,計(jì)算得到當(dāng)前幀更新的更新時(shí)間間隔;

第四計(jì)算單元38,用于根據(jù)當(dāng)前幀相對(duì)上一幀的幀數(shù)增量、所述更新時(shí)間間隔、第三時(shí)間損耗和第四時(shí)間損耗,計(jì)算得到當(dāng)前幀的幀率。

進(jìn)一步地,還包括:

第一構(gòu)建模塊6,用于在虛擬現(xiàn)實(shí)軟件中構(gòu)建服務(wù)端,并創(chuàng)建服務(wù)端套接字;

第二構(gòu)建模塊7,用于在外部的測(cè)試框架中構(gòu)建客戶(hù)端,并創(chuàng)建客戶(hù)端套接字;

第一發(fā)送模塊8,用于客戶(hù)端根據(jù)所述服務(wù)端的ip地址和端口號(hào),向服務(wù)端發(fā)送連接請(qǐng)求;

建立模塊9,用于服務(wù)端接收所述連接請(qǐng)求后,建立與客戶(hù)端的通信連接;

第二發(fā)送模塊10,用于客戶(hù)端發(fā)送幀率測(cè)試請(qǐng)求至服務(wù)端,所述幀率測(cè)試請(qǐng)求的數(shù)據(jù)包括預(yù)設(shè)的數(shù)據(jù)采集次數(shù)和預(yù)設(shè)的圖形渲染速率。

進(jìn)一步地,還包括:

存儲(chǔ)模塊11,用于將所述各幀的幀率存儲(chǔ)至數(shù)據(jù)列表中;

返回模塊12,用于服務(wù)端將所述數(shù)據(jù)列表返回至客戶(hù)端。

進(jìn)一步地,所述比對(duì)模塊5包括:

第五獲取單元51,用于獲取幀率標(biāo)準(zhǔn)均值;

比對(duì)單元52,用于分別將所述幀率、幀率平均值與所述幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),得到比對(duì)結(jié)果;

生成單元53,用于根據(jù)所述比對(duì)結(jié)果,生成測(cè)試報(bào)表。

綜上所述,本發(fā)明提供的一種虛擬現(xiàn)實(shí)軟件的幀率測(cè)試方法及其系統(tǒng),根據(jù)兩個(gè)幀之間的幀數(shù)增量以及兩個(gè)幀之間的更新間隔時(shí)間,即可計(jì)算出兩個(gè)幀中較后的幀的幀率,由此即可計(jì)算出各個(gè)幀的幀率,然后根據(jù)所計(jì)算出的各個(gè)幀的幀率以及總的測(cè)試幀數(shù),計(jì)算出幀率平均值,將幀率平均值與幀率標(biāo)準(zhǔn)均值進(jìn)行比對(duì),即可得知虛擬現(xiàn)實(shí)軟件的幀率是否符合標(biāo)準(zhǔn)。

以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等同變換,或直接或間接運(yùn)用在相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。

當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
驻马店市| 九龙坡区| 林周县| 永德县| 茂名市| 泊头市| 临夏市| 吉木乃县| 阜平县| 武城县| 合山市| 贵州省| 淮阳县| 河池市| 辰溪县| 霍州市| 出国| 江西省| 汉中市| 威海市| 灵璧县| 茂名市| 台安县| 普兰店市| 旅游| 义马市| 芒康县| 灌云县| 靖州| 北票市| 鱼台县| 印江| 酒泉市| 蒙自县| 武汉市| 寻甸| 安溪县| 双桥区| 黎平县| 观塘区| 会宁县|