亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

一種生成圖像幀的方法和裝置與流程

文檔序號:11285776閱讀:269來源:國知局
一種生成圖像幀的方法和裝置與流程

本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,特別涉及一種生成圖像幀的方法和裝置。



背景技術(shù):

隨著計算機(jī)技術(shù)的不斷發(fā)展,電子游戲也越來越流行,不少人喜歡在閑暇時間通過玩電子游戲來放松心情,緩解疲勞。根據(jù)運行的終端不同,電子游戲可以大致分為電腦游戲、主機(jī)游戲(或稱家用機(jī)游戲、電視游戲)、掌機(jī)游戲、街機(jī)游戲和移動游戲(主要是手機(jī)游戲)等。

用戶玩電子游戲(以下簡稱游戲)時,可以通過終端的輸入設(shè)備對游戲中的對象進(jìn)行控制,當(dāng)用戶操作輸入設(shè)備時,終端的操作系統(tǒng)可以接收到相應(yīng)的操作指令,并將操作指令提供給游戲的程序主線程,從而程序主線程可以對操作指令進(jìn)行邏輯處理,然后基于處理結(jié)果生成待顯示的圖像幀,從而在終端上顯示上述圖像幀。例如,在手機(jī)上玩角色扮演類游戲時,用戶可以通過點擊屏幕來控制游戲角色移動,這樣,終端的操作系統(tǒng)則可以接收到屏幕上某一點的點擊指令,然后游戲程序主線程可以根據(jù)該點擊指令計算下一圖像幀中游戲角色的位置,進(jìn)而可以生成相應(yīng)的圖像幀,并在終端屏幕上進(jìn)行顯示。

在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:

程序主線程每生成完一個圖像幀,則將圖像幀發(fā)送給屏幕顯示,然后繼續(xù)生成下一個圖像幀。當(dāng)程序主線程接收到某操作指令時,一般正在進(jìn)行某一圖像幀的生成處理,需要等到該圖像幀生成完畢后,才能開始對當(dāng)前接收到的操作指令進(jìn)行邏輯處理,這樣,程序主線程會基于圖像幀生成完畢時刻的游戲內(nèi)容對當(dāng)前接收到的操作指令進(jìn)行邏輯處理,而該時刻相對于用戶操作輸入設(shè)備的時刻,游戲內(nèi)容很可能已經(jīng)發(fā)生了較大改變,這樣,終端最終顯示出的圖像幀可能出現(xiàn)較大偏差。



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

為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種生成圖像幀的方法和裝置。所述技術(shù)方案如下:

第一方面,提供了一種生成圖像幀的方法,所述方法包括:

接收用戶輸入的操作指令;

通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果;

通過所述程序主線程,根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀,其中,所述目標(biāo)圖像幀為得到所述處理結(jié)果時,正在生成的圖像幀的后續(xù)圖像幀。

可選的,所述接收用戶輸入的操作指令之后,還包括:

通過程序消息分發(fā)線程,判斷所述操作指令對應(yīng)的操作類型;

如果所述操作指令的操作類型為預(yù)設(shè)操作,則通過所述消息分發(fā)線程將所述操作指令發(fā)送給程序輔線程。

可選的,所述通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果之后,還包括:

將所述處理結(jié)果存儲至操作結(jié)果隊列;

所述通過所述程序主線程,根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀,包括:

通過所述程序主線程,讀取所述操作結(jié)果隊列中存儲的所述處理結(jié)果,并根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀。

可選的,所述通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,包括:

在程序輔線程的目標(biāo)處理周期中,通過所述程序輔線程,基于所述目標(biāo)處理周期開始時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,其中,所述目標(biāo)處理周期為接收所述操作指令時,所述程序輔線程的當(dāng)前處理周期的下一周期。

可選的,所述方法還包括:

通過程序消息分發(fā)線程,記錄所述操作指令對應(yīng)的接收時刻;

所述通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,包括:

通過所述程序輔線程,基于所述接收時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

第二方面,提供了一種生成圖像幀的裝置,所述裝置包括:

接收模塊,用于接收用戶輸入的操作指令;

處理模塊,用于通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果;

生成模塊,用于通過所述程序主線程,根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀,其中,所述目標(biāo)圖像幀為得到所述處理結(jié)果時,正在生成的圖像幀的后續(xù)圖像幀。

可選的,所述裝置還包括:

判斷模塊,用于在接收用戶輸入的操作指令之后,通過程序消息分發(fā)線程,判斷所述操作指令對應(yīng)的操作類型;

發(fā)送模塊,用于如果所述操作指令的操作類型為預(yù)設(shè)操作,則通過所述消息分發(fā)線程將所述操作指令發(fā)送給程序輔線程。

可選的,所述裝置還包括:

存儲模塊,用于通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果之后,將所述處理結(jié)果存儲至操作結(jié)果隊列;

所述生成模塊,具體用于:

通過所述程序主線程,讀取所述操作結(jié)果隊列中存儲的所述處理結(jié)果,并根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀。

可選的,所述處理模塊,具體用于:

在程序輔線程的目標(biāo)處理周期中,通過所述程序輔線程,基于所述目標(biāo)處理周期開始時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,其中,所述目標(biāo)處理周期為接收所述操作指令時,所述程序輔線程的當(dāng)前處理周期的下一周期。

可選的,所述裝置還包括:

記錄模塊,用于通過程序消息分發(fā)線程,記錄所述操作指令對應(yīng)的接收時刻;

所述處理模塊,具體用于:

通過所述程序輔線程,基于所述接收時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以由程序輔線程基于程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

附圖說明

為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1是本發(fā)明實施例提供的一種生成圖像幀的方法流程圖;

圖1a是本發(fā)明實施例提供的一種處理時刻的對比圖;

圖1b是本發(fā)明實施例提供的一種生成圖像幀的時刻示意圖;

圖2是本發(fā)明實施例提供的一種生成圖像幀的方法流程圖;

圖3是本發(fā)明實施例提供的一種生成圖像幀的方法流程圖;

圖3a是本發(fā)明實施例提供的一種生成圖像幀的架構(gòu)示意圖;

圖4是本發(fā)明實施例提供的一種生成圖像幀的方法流程圖;

圖5是本發(fā)明實施例提供的一種生成圖像幀的裝置結(jié)構(gòu)示意圖;

圖6是本發(fā)明實施例提供的一種終端的結(jié)構(gòu)示意圖。

具體實施方式

為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進(jìn)一步地詳細(xì)描述。

本發(fā)明實施例提供了一種生成圖像幀的方法,該方法的執(zhí)行主體為終端,終端可以是具有運行應(yīng)用程序的任意終端,如手機(jī)、計算機(jī)等,應(yīng)用程序可以是任意需要與用戶進(jìn)行交互的程序,可以是游戲程序。終端中可以設(shè)置有處理器、存儲器、屏幕,處理器可以用于對顯示圖像的過程進(jìn)行處理,存儲器可以用于存儲下述處理過程中需要的數(shù)據(jù)以及產(chǎn)生的數(shù)據(jù),屏幕可以用于顯示下述處理過程中需要顯示給用戶的內(nèi)容,如圖像幀。終端中還可以設(shè)置輸入單元,輸入單元可以用于用戶向終端輸入指令或設(shè)置信息,如對于游戲程序,輸入單元可以是游戲控制設(shè)備。本實施例中,以終端為手機(jī)、程序為游戲程序為例進(jìn)行方案的詳細(xì)說明,其它情況與之類似,本實施例不再累述。

下面將結(jié)合具體實施方式,對圖1所示的處理流程進(jìn)行詳細(xì)的說明,內(nèi)容可以如下:

步驟101,接收用戶輸入的操作指令。

在實施中,當(dāng)終端運行游戲程序時,用戶可以通過控制設(shè)備控制游戲程序中的角色,以實現(xiàn)用戶想要完成的操作。此處,視終端的不同,控制設(shè)備可以是觸控屏幕、鼠標(biāo)、操作手柄等,視游戲程序類型的不同,角色可以是游戲程序中的任何可控元素,如游戲中的人物、車輛等。這樣,當(dāng)用戶操作控制設(shè)備時,終端可以相應(yīng)的接收到用戶輸入的操作指令。需要說明的是,此處具體可以是終端的系統(tǒng)程序獲取到上述操作指令,此處的操作指令可以是屏幕中某一點的點擊指令,或者是操作手柄上某一按鍵的按壓指令等。

步驟102,通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

其中,程序輔線程可以是獨立于程序主線程之外的,專用于對用戶輸入的操作指令進(jìn)行邏輯處理的線程。為了便于理解,對于游戲程序,后續(xù)提及的游戲主線程即為游戲的程序主線程,游戲輔線程即為游戲的程序輔線程。預(yù)設(shè)時刻可以是符合預(yù)設(shè)規(guī)則的時刻,如可以是接收操作指令后,程序輔線程開始對操作指令進(jìn)行邏輯處理的時刻,也可以是操作指令的接收時刻等等。

在實施中,技術(shù)人員在開發(fā)程序時,可以設(shè)計獨立于程序主線程之外的,專用于處理用戶輸入的操作指令的程序輔線程,這樣,在程序主線程進(jìn)行游戲主體的邏輯處理、圖像幀的渲染時,程序輔線程可以同時進(jìn)行與用戶操作指令相關(guān)的邏輯處理,從而在程序主線程需要生成操作指令對應(yīng)的圖像幀時,可以直接調(diào)用程序輔線程對于操作指令的處理結(jié)果。這樣,在用戶操作控制設(shè)備后,終端的系統(tǒng)程序可以接收相應(yīng)的操作指令,進(jìn)而終端的系統(tǒng)程序可以將接收到的操作指令提供給上述程序輔線程。從而,程序輔線程獲取到該操作指令后,可以基于預(yù)設(shè)時刻的程序運行參數(shù),對該操作指令進(jìn)行邏輯處理,得到處理結(jié)果,例如,操作指令為游戲手柄中的方向鍵上鍵的一次按壓操作,則程序輔線程可以先確定該操作指令確定的游戲中的控制對象,然后判斷在預(yù)設(shè)時刻的游戲場景下,上鍵的一次按鍵操作對應(yīng)的具體動作,如對應(yīng)控制對象向上移動,或者對應(yīng)控制對象跳躍一次等,之后,可以再確定上述動作完成后控制對象的狀態(tài)、位置等屬性信息,從而可以將這些信息轉(zhuǎn)換為二進(jìn)制數(shù)據(jù),即得到處理結(jié)果。

可選的,程序輔線程可以是周期性工作的,高頻處理線程,相應(yīng)的,步驟102的處理可以具體為:在程序輔線程的目標(biāo)處理周期中,通過程序輔線程,基于所述目標(biāo)處理周期開始時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

其中,目標(biāo)處理周期為接收所述操作指令時,程序輔線程的當(dāng)前處理周期的下一周期。此處,程序輔線程的處理周期的時長可以不是固定的,由需要處理的操作指令的個數(shù)決定,如果在某個處理周期內(nèi),程序輔線程需要進(jìn)行多個操作指令的邏輯處理,則該處理周期的時長較長。

在實施中,在終端運行程序后,程序輔線程可以持續(xù)處于周期性的工作狀態(tài),這樣,在終端接收到操作指令后,當(dāng)首次達(dá)到程序輔線程的周期處理時間點時(即達(dá)到目標(biāo)處理周期的開始時刻),程序輔線程可以基于當(dāng)前時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,從而得到處理結(jié)果。由于程序輔線程只需對用戶輸入的操作指令進(jìn)行邏輯處理,無需負(fù)責(zé)程序的其它邏輯處理,也無需進(jìn)行圖像幀的渲染處理,故而程序輔線程能夠以高于程序主線程的頻率運行,故而可以大幅減小對于操作指令的響應(yīng)延遲。此處,響應(yīng)延遲是對操作指令進(jìn)行邏輯處理的時刻與接收到操作指令的時刻之間的差值。如圖1a所示,假設(shè)程序主線程的幀率穩(wěn)定,在第n+1幀的時間t,接收到操作指令,則如果按照已有技術(shù)的方案,則需要由程序主線程在t3時刻基于t3時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,而按照本申請的方案,則可以由程序輔線程在t4時刻基于t4時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,故而響應(yīng)延遲可以由“t3-t”縮減至“t4-t”。需要說明的是,如果在目標(biāo)處理周期中需要對多個操作指令進(jìn)行邏輯處理,則可以均基于目標(biāo)處理周期開始時刻的程序運行參數(shù),對多個操作指令進(jìn)行邏輯處理。

步驟103,通過程序主線程,根據(jù)處理結(jié)果生成目標(biāo)圖像幀。

其中,目標(biāo)圖像幀為得到所述處理結(jié)果時,正在生成的圖像幀的后續(xù)圖像幀,具體的,可以是第一個后續(xù)圖像幀。

在實施中,程序輔線程對用戶輸入的操作指令進(jìn)行邏輯處理完成后,終端可以通過程序主線程獲取該處理結(jié)果,然后基于該處理結(jié)果生成后續(xù)圖像幀。具體的,在程序運行時,終端顯示某一圖像幀的同時,程序主線程會進(jìn)行下一圖像幀的邏輯處理和渲染處理,渲染完成后,程序主線程可以將下一圖像幀提供給終端進(jìn)行顯示,因此,終端通過程序輔線程得到對操作指令的處理結(jié)果后,需要等待程序主線程完成當(dāng)前圖像幀的生成處理(即生成完接收到操作指令時,程序主線程正在處理的圖像幀),才能通過程序主線程根據(jù)程序輔線程對操作指令進(jìn)行邏輯處理的處理結(jié)果,生成目標(biāo)圖像幀。如圖1b所示,在時刻t接收到操作指令,程序輔線程在t4時刻開始對操作指令進(jìn)行邏輯處理,在t5時刻得到處理結(jié)果,進(jìn)而,程序主線程可以在t3時刻,完成第n+2幀的生成處理后,基于程序輔線程對于操作指令的處理結(jié)果,生成第n+3幀(即目標(biāo)圖像幀)。值得一提的是,圖像幀的邏輯處理可以分為程序運行主體的邏輯計算和對用戶操作指令的邏輯計算,故而,程序主線程在進(jìn)行目標(biāo)圖像幀的邏輯處理過程中,當(dāng)需要對用戶操作指令進(jìn)行邏輯計算時,可以直接獲取程序輔線程提供的處理結(jié)果,然后根據(jù)該處理結(jié)果完成目標(biāo)圖像幀的邏輯處理,并渲染生成目標(biāo)圖像幀。

為了便于理解,此處通過以下例子對上述部分處理進(jìn)行簡單說明:程序主線程需要根據(jù)參數(shù)z進(jìn)行圖像幀的渲染,而在無用戶操作的情況下,參數(shù)z需要程序主線程通過邏輯處理z=f(x)得到,參數(shù)x可以通過邏輯處理x=g(t),其中,t為程序運行時長。如果用戶進(jìn)行了操作,參數(shù)z的邏輯處理變?yōu)閦=f(x,y),則在現(xiàn)有處理中,程序主線程的邏輯處理可以為先確定參數(shù)x,再確定參數(shù)y,最后可以根據(jù)參數(shù)x和y確定參數(shù)z。而采用本方案,參數(shù)y可以由程序輔線程確定(即參數(shù)y為處理結(jié)果),這樣,在確定參數(shù)z時,程序主線程可以先確定參數(shù)x,再根據(jù)獲取到的參數(shù)y,確定出參數(shù)z。

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以由程序輔線程基于程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

本發(fā)明實施例還提供了一種生成圖像幀的方法,下面將結(jié)合具體實施方式,對圖2所示的處理流程進(jìn)行詳細(xì)的說明,內(nèi)容可以如下:

步驟201,通過程序消息分發(fā)線程獲取用戶輸入的操作指令。

其中,程序消息分發(fā)線程可以是程序所包含的,獨立于程序主線程和程序輔線程之外的,用于獲取用戶輸入的操作指令,并將操作指令分發(fā)給程序主線程或程序輔線程的線程。

在實施中,當(dāng)終端運行游戲程序時,用戶可以通過控制設(shè)備控制游戲程序中的角色,以實現(xiàn)用戶想要完成的操作。當(dāng)用戶操作控制設(shè)備時,終端可以通過程序消息分發(fā)線程獲取到用戶輸入的操作指令。

步驟202,通過程序消息分發(fā)線程,判斷操作指令對應(yīng)的操作類型,如果操作指令的操作類型為預(yù)設(shè)操作類型,則通過消息分發(fā)線程將操作指令發(fā)送給程序輔線程。

在實施中,程序的設(shè)計人員可以預(yù)先對程序所支持的用戶所有操作的操作類型,按照對響應(yīng)速度的需求度進(jìn)行劃分,即可以將程序內(nèi)涉及的所有用戶操作的操作類型分為要求響應(yīng)速度很快的操作類型(如第一人稱射擊游戲中鏡頭的切換操作)和可以容忍一定響應(yīng)延遲的操作類型(如程序的設(shè)置界面的打開操作),從而設(shè)計人員可以將上述劃分結(jié)果寫入程序消息分發(fā)線程的執(zhí)行代碼中。這樣,當(dāng)程序運行時,程序消息分發(fā)線程獲取到用戶輸入的操作指令后,可以先判斷該操作指令對應(yīng)的操作類型,然后確定該操作類型是否為預(yù)設(shè)操作類型,即確定該操作類型下的所有操作對響應(yīng)速度的需求度。如果操作指令的操作類型為預(yù)設(shè)操作類型,即操作指令對應(yīng)的操作需要較高的響應(yīng)速度,終端則可以通過消息分發(fā)線程將操作指令發(fā)送給程序輔線程。可以理解,如果操作指令對應(yīng)的操作不需要較高的響應(yīng)速度,則消息分發(fā)線程可以將該操作指令直接發(fā)送給程序主線程。

此外,消息分發(fā)線程還可以根據(jù)程序主線程已生成的圖像幀的間隔時長,確定程序主線程生成一個圖像幀的平均時長,之后,可以在程序主線程生成完一個圖像幀后預(yù)估下一圖像幀的生成時刻,如果在下一圖像幀的生成時刻前預(yù)設(shè)時長內(nèi)接收到操作指令,則可以直接將操作指令發(fā)送給程序主線程進(jìn)行處理。上述預(yù)設(shè)時長可以是從消息分發(fā)線程將操作指令提供給程序輔線程開始,到程序主線程獲取到處理結(jié)果的最短耗時。進(jìn)一步的,如果程序輔線程是周期性工作的,則該預(yù)設(shè)時長可以是程序輔線程的平均工作周期。

步驟203,通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

本步驟的具體處理可以參考步驟102。

步驟204,通過程序主線程,根據(jù)處理結(jié)果生成目標(biāo)圖像幀。

本步驟的具體處理可以參考步驟103。

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以先由程序消息分發(fā)線程對用戶的操作進(jìn)行類型分析,如果其操作類型屬于對響應(yīng)速度需求較高的操作類型,則可以由程序輔線程基于程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

本發(fā)明實施例還提供了一種生成圖像幀的方法,下面將結(jié)合具體實施方式,對圖3所示的處理流程進(jìn)行詳細(xì)的說明,內(nèi)容可以如下:

步驟301,通過程序消息分發(fā)線程接收用戶輸入的操作指令。

本步驟的具體處理可以參考步驟201。

步驟302,通過程序消息分發(fā)線程將操作指令存儲至操作指令隊列。

在實施中,程序消息分發(fā)線程接收到用戶輸入的操作指令后,可以將該操作指令存儲至操作指令隊列中。操作指令隊列中的操作指令可以按照用戶輸入的先后順序進(jìn)行排列,或者,程序消息分發(fā)線程在接收用戶輸入的操作指令時,記錄該操作指令對應(yīng)的接收時刻,從而可以將接收時刻和操作指令對應(yīng)存儲至操作指令隊列中。

步驟303,通過程序輔線程,讀取操作指令隊列中存儲的操作指令,并基于預(yù)設(shè)時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

在實施中,程序輔線程可以讀取操作指令隊列中存儲的操作指令,并根據(jù)預(yù)設(shè)時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,從而得到相應(yīng)的處理結(jié)果。如果操作指令隊列中存儲有多個未處理的操作指令,則程序輔線程可以按照先后順序?qū)Χ鄠€操作指令依次進(jìn)行邏輯處理。進(jìn)一步的,如果操作指令隊列中同時記錄有操作指令對應(yīng)的接收時刻,則程序輔線程可以按照接收時刻由早及晚對多個操作指令依次進(jìn)行邏輯處理。此處,在程序輔線程讀取完處理結(jié)果后,可以刪除操作指令隊列中相應(yīng)的操作指令,避免程序輔線程對某個操作指令重復(fù)讀取。

步驟304,通過程序輔線程將處理結(jié)果存儲至操作結(jié)果隊列。

在實施中,程序輔線程對用戶輸入的操作指令進(jìn)行邏輯處理,得到處理結(jié)果后,可以將處理結(jié)果存儲至操作結(jié)果隊列中??梢岳斫猓僮鹘Y(jié)果隊列可以專用于存儲程序輔線程對于用戶輸入的操作指令的處理結(jié)果,其中,處理結(jié)果可以按照用戶輸入操作指令的先后順序進(jìn)行排列,或者,程序輔線程可以將操作指令的接收時刻和處理結(jié)果對應(yīng)存儲至操作指令隊列中。

步驟305,通過程序主線程,讀取操作結(jié)果隊列中存儲的處理結(jié)果,并根據(jù)處理結(jié)果生成目標(biāo)圖像幀。

在實施中,程序主線程可以讀取操作結(jié)果隊列中存儲的處理結(jié)果,并根據(jù)該處理結(jié)果生成后續(xù)圖像幀。如果操作結(jié)果隊列中存儲有多個操作指令的處理結(jié)果,則程序主線程可以按照先后順序讀取多個處理結(jié)果,并基于多個處理結(jié)果生成后續(xù)圖像幀。此處,在程序主線程讀取完處理結(jié)果后,可以刪除操作結(jié)果隊列中相應(yīng)的處理結(jié)果,避免程序主線程對某個處理結(jié)果重復(fù)讀取。

圖3a示出了一種可行的架構(gòu)示意圖,該架構(gòu)示意圖僅用于幫助理解方案,不對方案進(jìn)行限定。

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以先由程序消息分發(fā)線程將操作指令存儲至操作指令隊列,從而程序輔線程可以從操作指令隊列中讀取相應(yīng)的操作指令,再基于程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,并將邏輯處理結(jié)果存儲至操作結(jié)果隊列中供程序主線程讀取,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

本發(fā)明實施例還提供了一種生成圖像幀的方法,下面將結(jié)合具體實施方式,對圖4所示的處理流程進(jìn)行詳細(xì)的說明,內(nèi)容可以如下:

步驟401,通過程序消息分發(fā)線程獲取用戶輸入的操作指令。

本步驟的具體處理可以參考步驟201。

步驟402,通過程序消息分發(fā)線程,記錄操作指令對應(yīng)的接收時刻。

在實施中,程序消息分發(fā)線程獲取到用戶輸入的操作指令后,可以同時記錄下該操作指令對應(yīng)的接收時刻。值得一提的是,程序消息分發(fā)線程主要用于操作指令的分發(fā),工作頻率較高,故而該接收時刻和操作指令實際的輸入時刻相差時長極小。

步驟403,通過程序輔線程,基于接收時刻的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

在實施中,程序輔線程可以接收到程序消息分發(fā)線程發(fā)送過來的操作指令,同時可以獲取程序消息分發(fā)線程記錄的該操作指令對應(yīng)的接收時刻。之后,程序輔線程可以確定該接收時刻的程序運行參數(shù),然后基于確定出的程序運行參數(shù),對操作指令進(jìn)行邏輯處理,從而可以得到延遲極小的處理結(jié)果。不難理解,由于上述接收時刻和用戶的實際操作時間非常接近,故而接收時刻的程序運行參數(shù)與用戶實際操作時的程序運行參數(shù)相差不大,這樣,得到處理結(jié)果能夠更加符合用戶操作的準(zhǔn)確目的。需要說明的是,如果在目標(biāo)處理周期中需要對多個操作指令進(jìn)行邏輯處理,則可以分別基于每個操作指令的接收時刻的程序運行參數(shù),對每個操作指令進(jìn)行邏輯處理。

步驟404,通過程序主線程,根據(jù)處理結(jié)果生成目標(biāo)圖像幀。

本步驟的具體處理可以參考步驟103。

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以先由程序消息分發(fā)線程記錄操作指令的接收時刻,然后由程序輔線程基于該接收時刻對應(yīng)的程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

基于相同的技術(shù)構(gòu)思,本發(fā)明實施例還提供了一種生成圖像幀的裝置,如圖5所示,該裝置包括:

接收模塊501,用于接收用戶輸入的操作指令;

處理模塊502,用于通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果;

生成模塊503,用于通過所述程序主線程,根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀,其中,所述目標(biāo)圖像幀為得到所述處理結(jié)果時,正在生成的圖像幀的后續(xù)圖像幀。

可選的,所述裝置還包括:

判斷模塊,用于在接收用戶輸入的操作指令之后,通過程序消息分發(fā)線程,判斷所述操作指令對應(yīng)的操作類型;

發(fā)送模塊,用于如果所述操作指令的操作類型為預(yù)設(shè)操作,則通過所述消息分發(fā)線程將所述操作指令發(fā)送給程序輔線程。

可選的,所述裝置還包括:

存儲模塊,用于通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果之后,將所述處理結(jié)果存儲至操作結(jié)果隊列;

所述生成模塊,具體用于:

通過所述程序主線程,讀取所述操作結(jié)果隊列中存儲的所述處理結(jié)果,并根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀。

可選的,所述處理模塊,具體用于:

在程序輔線程的目標(biāo)處理周期中,通過所述程序輔線程,基于所述目標(biāo)處理周期開始時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,其中,所述目標(biāo)處理周期為接收所述操作指令時,所述程序輔線程的當(dāng)前處理周期的下一周期。

可選的,所述裝置還包括:

記錄模塊,用于通過程序消息分發(fā)線程,記錄所述操作指令對應(yīng)的接收時刻;

所述處理模塊,具體用于:

通過所述程序輔線程,基于所述接收時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以由程序輔線程基于程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

需要說明的是:上述實施例提供的生成圖像幀的裝置在生成圖像幀時,僅以上述各功能模塊的劃分進(jìn)行舉例說明,實際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。另外,上述實施例提供的生成圖像幀的裝置與生成圖像幀的方法實施例屬于同一構(gòu)思,其具體實現(xiàn)過程詳見方法實施例,這里不再贅述。

圖6是根據(jù)一示例性實施例示出的一種終端的結(jié)構(gòu)示意圖。該終端可以用于實施上述實施例中提供的生成圖像幀的方法。

終端600可以包括rf(radiofrequency,射頻)電路610、包括有一個或一個以上計算機(jī)可讀存儲介質(zhì)的存儲器620、輸入單元630、顯示單元640、傳感器650、音頻電路660、wifi(wirelessfidelity,無線保真)模塊670、包括有一個或者一個以上處理核心的處理器680、以及電源690等部件。本領(lǐng)域技術(shù)人員可以理解,圖6中示出的終端結(jié)構(gòu)并不構(gòu)成對終端的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。其中:

rf電路610可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,交由一個或者一個以上處理器680處理;另外,將涉及上行的數(shù)據(jù)發(fā)送給基站。通常,rf電路610包括但不限于天線、至少一個放大器、調(diào)諧器、一個或多個振蕩器、用戶身份模塊(sim)卡、收發(fā)信機(jī)、耦合器、lna(lownoiseamplifier,低噪聲放大器)、雙工器等。此外,rf電路610還可以通過無線通信與網(wǎng)絡(luò)和其他設(shè)備通信。所述無線通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于gsm(globalsystemofmobilecommunication,全球移動通訊系統(tǒng))、gprs(generalpacketradioservice,通用分組無線服務(wù))、cdma(codedivisionmultipleaccess,碼分多址)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、lte(longtermevolution,長期演進(jìn))、電子郵件、sms(shortmessagingservice,短消息服務(wù))等。

存儲器620可用于存儲軟件程序以及模塊,處理器680通過運行存儲在存儲器620的軟件程序以及模塊,從而執(zhí)行各種功能應(yīng)用以及數(shù)據(jù)處理。存儲器620可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)終端600的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器620可以包括高速隨機(jī)存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。相應(yīng)地,存儲器620還可以包括存儲器控制器,以提供處理器680和輸入單元630對存儲器620的訪問。

輸入單元630可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與用戶設(shè)置以及功能控制有關(guān)的鍵盤、鼠標(biāo)、操作桿、光學(xué)或者軌跡球信號輸入。具體地,輸入單元630可包括觸敏表面631以及其他輸入設(shè)備632。觸敏表面631,也稱為觸摸顯示屏或者觸控板,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸敏表面631上或在觸敏表面631附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動相應(yīng)的連接裝置。可選的,觸敏表面631可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點坐標(biāo),再送給處理器680,并能接收處理器680發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸敏表面631。除了觸敏表面631,輸入單元630還可以包括其他輸入設(shè)備632。具體地,其他輸入設(shè)備632可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。

顯示單元640可用于顯示由用戶輸入的信息或提供給用戶的信息以及終端600的各種圖形用戶接口,這些圖形用戶接口可以由圖形、文本、圖標(biāo)、視頻和其任意組合來構(gòu)成。顯示單元640可包括顯示面板641,可選的,可以采用lcd(liquidcrystaldisplay,液晶顯示器)、oled(organiclight-emittingdiode,有機(jī)發(fā)光二極管)等形式來配置顯示面板641。進(jìn)一步的,觸敏表面631可覆蓋顯示面板641,當(dāng)觸敏表面631檢測到在其上或附近的觸摸操作后,傳送給處理器680以確定觸摸事件的類型,隨后處理器680根據(jù)觸摸事件的類型在顯示面板641上提供相應(yīng)的視覺輸出。雖然在圖6中,觸敏表面631與顯示面板641是作為兩個獨立的部件來實現(xiàn)輸入和輸入功能,但是在某些實施例中,可以將觸敏表面631與顯示面板641集成而實現(xiàn)輸入和輸出功能。

終端600還可包括至少一種傳感器650,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調(diào)節(jié)顯示面板641的亮度,接近傳感器可在終端600移動到耳邊時,關(guān)閉顯示面板641和/或背光。作為運動傳感器的一種,重力加速度傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計姿態(tài)校準(zhǔn))、振動識別相關(guān)功能(比如計步器、敲擊)等;至于終端600還可配置的陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。

音頻電路660、揚聲器661,傳聲器662可提供用戶與終端600之間的音頻接口。音頻電路660可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號,傳輸?shù)綋P聲器661,由揚聲器661轉(zhuǎn)換為聲音信號輸出;另一方面,傳聲器662將收集的聲音信號轉(zhuǎn)換為電信號,由音頻電路660接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器680處理后,經(jīng)rf電路610以發(fā)送給比如另一終端,或者將音頻數(shù)據(jù)輸出至存儲器620以便進(jìn)一步處理。音頻電路660還可能包括耳塞插孔,以提供外設(shè)耳機(jī)與終端600的通信。

wifi屬于短距離無線傳輸技術(shù),終端600通過wifi模塊670可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖6示出了wifi模塊670,但是可以理解的是,其并不屬于終端600的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。

處理器680是終端600的控制中心,利用各種接口和線路連接整個手機(jī)的各個部分,通過運行或執(zhí)行存儲在存儲器620內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲在存儲器620內(nèi)的數(shù)據(jù),執(zhí)行終端600的各種功能和處理數(shù)據(jù),從而對手機(jī)進(jìn)行整體監(jiān)控??蛇x的,處理器680可包括一個或多個處理核心;優(yōu)選的,處理器680可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無線通信??梢岳斫獾氖牵鲜稣{(diào)制解調(diào)處理器也可以不集成到處理器680中。

終端600還包括給各個部件供電的電源690(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器680邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。電源690還可以包括一個或一個以上的直流或交流電源、再充電系統(tǒng)、電源故障檢測電路、電源轉(zhuǎn)換器或者逆變器、電源狀態(tài)指示器等任意組件。

盡管未示出,終端600還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。具體在本實施例中,終端600的顯示單元是觸摸屏顯示器,終端600還包括有存儲器,以及一個或者一個以上的程序,其中一個或者一個以上程序存儲于存儲器中,且經(jīng)配置以由一個或者一個以上處理器執(zhí)行述一個或者一個以上程序包含用于進(jìn)行以下操作的指令:

接收用戶輸入的操作指令;

通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果;

通過所述程序主線程,根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀,其中,所述目標(biāo)圖像幀為得到所述處理結(jié)果時,正在生成的圖像幀的后續(xù)圖像幀。

可選的,所述接收用戶輸入的操作指令之后,還包括:

通過程序消息分發(fā)線程,判斷所述操作指令對應(yīng)的操作類型;

如果所述操作指令的操作類型為預(yù)設(shè)操作,則通過所述消息分發(fā)線程將所述操作指令發(fā)送給程序輔線程。

可選的,所述通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果之后,還包括:

將所述處理結(jié)果存儲至操作結(jié)果隊列;

所述通過所述程序主線程,根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀,包括:

通過所述程序主線程,讀取所述操作結(jié)果隊列中存儲的所述處理結(jié)果,并根據(jù)所述處理結(jié)果生成目標(biāo)圖像幀。

可選的,所述通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,包括:

在程序輔線程的目標(biāo)處理周期中,通過所述程序輔線程,基于所述目標(biāo)處理周期開始時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,其中,所述目標(biāo)處理周期為接收所述操作指令時,所述程序輔線程的當(dāng)前處理周期的下一周期。

可選的,所述方法還包括:

通過程序消息分發(fā)線程,記錄所述操作指令對應(yīng)的接收時刻;

所述通過程序輔線程,基于預(yù)設(shè)時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果,包括:

通過所述程序輔線程,基于所述接收時刻的程序運行參數(shù),對所述操作指令進(jìn)行邏輯處理,得到處理結(jié)果。

本發(fā)明實施例中,用戶操作輸入設(shè)備后,可以由程序輔線程基于程序內(nèi)容快速對操作指令進(jìn)行邏輯處理,無需由程序主線程在生成完當(dāng)前圖像幀后再對操作指令進(jìn)行響應(yīng),進(jìn)而,終端最終顯示出的圖像幀出現(xiàn)的偏差較小。

本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分步驟可以通過硬件來完成,也可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機(jī)可讀存儲介質(zhì)中,上述提到的存儲介質(zhì)可以是只讀存儲器,磁盤或光盤等。

以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。

當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1