亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種渲染優(yōu)化方法和裝置與流程

文檔序號:12127464閱讀:542來源:國知局
一種渲染優(yōu)化方法和裝置與流程

本發(fā)明涉及計算機技術領域,尤其涉及一種渲染優(yōu)化方法和裝置。



背景技術:

開放圖形庫(Open Graphics Library,OpenGL)可用于二維圖像或者三維圖像,是一個功能強大、調用方便的底層圖形庫。使用OpenGL進行圖元的繪制時,若沒用使用頂點緩沖對象(Vertex Buffer Object,VBO),要繪制的頂點數(shù)據(jù)是以頂點數(shù)組的形式保存在客戶端的內存中,在每次調用繪制函數(shù)(例如:glDrawArrays或者glDrawElements)的時候,圖形處理器(Graphic Processing Unit,GPU)訪問系統(tǒng)內存拷貝頂點數(shù)組時,需要通過顯卡總線到主板總線最后到系統(tǒng)內存,這個訪問的過程其實是很低效的。而VBO的作用,就是把這份每次都要拷貝的頂點數(shù)組緩存在顯卡內存中,通過VBO可以直接在顯卡內存中分配并緩存頂點數(shù)據(jù)。這樣就避免了每次調用繪制(draw)接口的時候的拷貝操作,從而提高了渲染性能同時降低了內存帶寬和設備的電量消耗。索引緩沖對象(Indice Buffer Object,IBO)和VBO的原理類似,只不過IBO是緩存了VBO繪制時候的索引(Indice)。根據(jù)OpenGL ES(OpenGL for Embedded Systems)的建議,要想獲得最好的性能,就要盡可能使用VBO和IBO來完成繪制任務。

Cocos2d是一個開源框架,用于構建游戲、應用程序和其他圖形界面交互應用,Cocos2d是在OpenGL ES上面的一層封裝,而且Cocos2d中還包含了:用戶界面、網(wǎng)絡通訊、跨平臺數(shù)據(jù)持久化存儲、音頻播放、物理引擎等多種方便開發(fā)的模塊,這樣可以比直接使用OpenGL ES開發(fā)游戲,更加迅速、簡單。Cocos2d讓開發(fā)者將精力更加集中在游戲本身,而不是底層的圖像繪制上。

Cocos2dx是Cocos2d的一種實現(xiàn)版本,Cocos2dx可以對繪制進行合并后再批量繪制,Cocos2dx中每個顯示圖片的繪制都需要生成一個繪制命令,繪制時會把所有繪制命令緩存下來,在批量繪制前進行排序,然后將排序后的繪制命令中所有頂點數(shù)據(jù)保存在一片連續(xù)的系統(tǒng)內存中。在繪制前會進行合并批次判斷,根據(jù)材質標識(Material ID)來決定不同的頂點數(shù)據(jù)是否在同一個批次進行繪制,從而就可以減少圖形渲染時的繪制調用,因此就能減少中央處理器(Central Processing Unit,CPU)消耗,使得系統(tǒng)更流暢,更省電。

現(xiàn)有技術中對于各種類型的移動終端,在特定機型上開啟繪制合并后,會出現(xiàn)圖片顯示不流暢或者掉幀問題,而且合并策略是統(tǒng)一的策略,各種應用發(fā)布時只能選擇開啟繪制合并功能或關閉繪制合并功能,這樣會導致為了規(guī)避問題機器出現(xiàn)不流暢或者掉幀問題,而對所有類型的移動終端上都會關閉渲染合并優(yōu)化,但是關閉繪制合并功能又會占用較多的CPU消耗,這顯然并不是最優(yōu)的解決方案。



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

本發(fā)明實施例提供了一種渲染優(yōu)化方法和裝置,用于在各種類型的移動終端上都開啟繪制合并功能時保證圖片顯示的流暢,避免發(fā)生掉幀問題。

為解決上述技術問題,本發(fā)明實施例提供以下技術方案:

第一方面,本發(fā)明實施例提供一種渲染優(yōu)化方法,包括:

根據(jù)多個繪制請求創(chuàng)建多個渲染命令,其中,每個渲染命令關聯(lián)有對應的頂點數(shù)據(jù),所述渲染命令包括:紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型和材質標識;

對所述多個渲染命令和每個渲染命令關聯(lián)的頂點數(shù)據(jù)進行緩存,然后執(zhí)行如下兩種判斷方式中的至少一種判斷方式:判斷當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量是否大于頂點數(shù)據(jù)閾值,判斷顯卡的圖形處理器GPU是否屬于預置的邏輯類型集合且判斷當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合;

若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于所述頂點數(shù)據(jù)閾值,和/或所述GPU屬于所述邏輯類型集合且所述當前使用的操作系統(tǒng)屬于所述系統(tǒng)類型集合,對所述多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將所述每個渲染命令關聯(lián)的頂點數(shù)據(jù)從所述系統(tǒng)內存發(fā)送給圖形渲染應用程序接口。

第二方面,本發(fā)明實施例還提供一種渲染優(yōu)化裝置,包括:

創(chuàng)建模塊,用于根據(jù)多個繪制請求創(chuàng)建多個渲染命令,其中,每個渲染命令關聯(lián)有對應的頂點數(shù)據(jù),所述渲染命令包括:紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型和材質標識;

判斷模塊,用于對所述多個渲染命令和每個渲染命令關聯(lián)的頂點數(shù)據(jù)進行緩存,然后執(zhí)行如下兩種判斷方式中的至少一種判斷方式:判斷當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量是否大于頂點數(shù)據(jù)閾值,判斷顯卡的圖形處理器GPU是否屬于預置的邏輯類型集合且判斷當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合;

繪制模塊,用于若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于所述頂點數(shù)據(jù)閾值,和/或所述GPU屬于所述邏輯類型集合且所述當前使用的操作系統(tǒng)屬于所述系統(tǒng)類型集合,對所述多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

發(fā)送模塊,用于將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將所述每個渲染命令關聯(lián)的頂點數(shù)據(jù)從所述系統(tǒng)內存發(fā)送給圖形渲染應用程序接口。

從以上技術方案可以看出,本發(fā)明實施例具有以下優(yōu)點:

在本發(fā)明實施例中,在創(chuàng)建有多個渲染命令時,不立即進行繪制,而是分析當前緩存的頂點數(shù)據(jù)的數(shù)據(jù)量,以及分析顯卡采用的GPU的邏輯類型和當前使用操作系統(tǒng)的系統(tǒng)版本,再結合預置的頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合分別作出判斷,若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,則說明當前正在使用的移動終端因緩存的頂點數(shù)據(jù)過小,或GPU、操作系統(tǒng)的版本或類型問題,會出現(xiàn)圖片顯示不流暢或者掉幀問題,本發(fā)明實施例中對于上述存在問題的移動終端,仍可以對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制,因此繪制合并功能可以開啟,從而減少對CPU的消耗。對于存在當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合的情況,本發(fā)明實施例中,將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口,因此每個渲染命令關聯(lián)的頂點數(shù)據(jù)是從系統(tǒng)內存直接發(fā)送給圖形渲染應用程序接口,而不再存儲到顯卡內存中,以避免圖片顯示不流暢或者掉幀問題。

附圖說明

為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域的技術人員來講,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實施例提供的一種渲染優(yōu)化方法的流程方框示意圖;

圖2為本發(fā)明實施例提供的圖形渲染過程的實現(xiàn)場景示意圖;

圖3為本發(fā)明實施例提供的頂點數(shù)據(jù)在系統(tǒng)內存中的存儲過程示意圖;

圖4為本發(fā)明實施例提供的頂點數(shù)據(jù)存儲在VBO中的實現(xiàn)場景示意圖;

圖5為本發(fā)明實施例提供的渲染優(yōu)化方法的一種應用場景示意圖;

圖6-a為本發(fā)明實施例提供的一種渲染優(yōu)化裝置的組成結構示意圖;

圖6-b為本發(fā)明實施例提供的另一種渲染優(yōu)化裝置的組成結構示意圖;

圖7為本發(fā)明實施例提供的渲染優(yōu)化方法應用于終端的組成結構示意圖。

具體實施方式

本發(fā)明實施例提供了一種渲染優(yōu)化方法和裝置,用于在各種類型的移動終端上都開啟繪制合并功能時保證圖片顯示的流暢,避免發(fā)生掉幀問題。

為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點能夠更加的明顯和易懂,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,下面所描述的實施例僅僅是本發(fā)明一部分實施例,而非全部實施例。基于本發(fā)明中的實施例,本領域的技術人員所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。

本發(fā)明的說明書和權利要求書及上述附圖中的術語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過程、方法、系統(tǒng)、產(chǎn)品或設備不必限于那些單元,而是可包括沒有清楚地列出的或對于這些過程、方法、產(chǎn)品或設備固有的其它單元。

以下分別進行詳細說明。

本發(fā)明渲染優(yōu)化方法的一個實施例,具體可以應用于存在圖像顯示不流暢的移動終端中,使得這些機型的移動終端也可以開啟繪制合并功能,并且可以解決圖像顯示出現(xiàn)的不流暢和掉幀問題,請參閱圖1所示,本發(fā)明一個實施例提供的渲染優(yōu)化方法,可以包括如下步驟:

101、根據(jù)多個繪制請求創(chuàng)建多個渲染命令,其中,每個渲染命令關聯(lián)有對應的頂點數(shù)據(jù),渲染命令包括:紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型和材質標識。

在本發(fā)明實施例中,需要繪制圖形時,可以由渲染器(Render)來觸發(fā)繪制請求,對于觸發(fā)的每個繪制請求都可以創(chuàng)建一個渲染命令,例如可以使用渲染隊列(RenderQueque)創(chuàng)建渲染命令(RenderCommand),渲染隊列可以作為緩沖區(qū),每次生成對應的RenderCommand緩存下來。在本發(fā)明實施例中對于每個渲染命令都對應有頂點數(shù)據(jù),該頂點數(shù)據(jù)具體可以為渲染中的四邊形數(shù)據(jù)Quad。在創(chuàng)建的每個渲染命令中都可以包括紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型和材質標識,其中,紋理貼圖是繪制時需要使用的紋理,例如紋理貼圖可以是texture。顯卡腳本數(shù)據(jù)是顯卡識別的腳本語言,用于GPU的計算,例如顯卡腳本數(shù)據(jù)可以是shader?;旌虾瘮?shù)類型是指渲染中經(jīng)常用到的混合方式,比如alpha混合和疊加混合等等。當獲取到紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型之后,可以根據(jù)紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型來生成材質標識(Material ID)。舉例說明如下,渲染命令是一個類,例如RenderCommand,該類包含了很多屬性:紋理_textureID,Program_shader,混合函數(shù)_blendType,頂點數(shù)據(jù)_Quad,還有一個材質屬性_materialID,材質是一種抽象,當且僅當紋理、shader、混合函數(shù)類型都相等的時候,材質才相等。

102、對多個渲染命令和每個渲染命令關聯(lián)的頂點數(shù)據(jù)進行緩存,然后執(zhí)行如下兩種判斷方式中的至少一種判斷方式:判斷當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量是否大于頂點數(shù)據(jù)閾值,判斷顯卡的GPU是否屬于預置的邏輯類型集合且判斷當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合。

在本發(fā)明實施例中,在創(chuàng)建有多個渲染命令時,不立即進行繪制,而是分析當前緩存的頂點數(shù)據(jù)的數(shù)據(jù)量,以及分析顯卡采用的GPU的邏輯類型和當前使用操作系統(tǒng)的系統(tǒng)版本,再結合預置的頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合分別作出判斷,其中,頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合可以針對圖形渲染時出現(xiàn)渲染問題的移動終端來確定,頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合的預配置可以是經(jīng)過多次測試后確定下來的取值或者范圍,并且可以針對測試問題機型的需要來靈活配置,具體此處不做限定。舉例說明如下,頂點數(shù)據(jù)閾值的選擇可以結合在緩存的頂點數(shù)據(jù)量的規(guī)模來確定,GPU對應的邏輯類型集合可以指出現(xiàn)圖形顯示不流暢或掉幀的移動終端采用的GPU類型來確定,例如可以是powervr SGX544系列顯卡,移動終端當前使用的操作系統(tǒng)對應的系統(tǒng)類型集合名可以指出現(xiàn)圖形顯示不流暢或掉幀的移動終端安裝的操作系統(tǒng)版本來確定,例如可以是Android版本為4.2.2及以下的操作系統(tǒng)。需要說明的是,頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合的預先配置可以不局限于上述舉例,此處僅作舉例說明,不作為限定。

在本發(fā)明實施例中,對多個渲染命令和每個渲染命令關聯(lián)的頂點數(shù)據(jù)進行緩存之后,需要執(zhí)行如下兩種判斷方式中的至少一種判斷方式:判斷方式1、判斷當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量是否大于頂點數(shù)據(jù)閾值,判斷方式2、判斷顯卡的GPU是否屬于預置的邏輯類型集合且判斷當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合。在不同的應用場景下,可以只執(zhí)行判斷方式1,也可以只執(zhí)行判斷方式2,也還可以同時執(zhí)行判斷方式1和判斷方式2,具體結合具體的實現(xiàn)方式。舉例說明如下,對于判斷方式2,預先配置屬于問題機型的移動終端采用的GPU,將其定義為邏輯類型集合,然后判斷當前顯示圖片的移動終端采用的GPU類型以及型號是否屬于該邏輯類型集合。又如,預先配置屬于問題機型的移動終端采用的操作系統(tǒng),將其定義為系統(tǒng)類型集合,然后判斷當前顯示圖片的移動終端采用的操作系統(tǒng)的版本是否屬于該系統(tǒng)類型集合。

在本發(fā)明的一些實施例中,步驟102中的判斷當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合,可以包括如下步驟:

A1、判斷當前使用的操作系統(tǒng)的版本號是否小于或等于預置版本號,若當前使用的操作系統(tǒng)的版本號小于或等于預置版本號,則確定當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,若當前使用的操作系統(tǒng)的版本號大于預置版本號,則確定當前使用的操作系統(tǒng)不屬于系統(tǒng)類型集合。

其中,系統(tǒng)類型集合可以通過預置版本號來實現(xiàn),例如小于或等于預置版本號的操作系統(tǒng)都屬于該系統(tǒng)類型集合,則可以判斷當前移動終端所采用的操作系統(tǒng)的版本號是否小于或等于預置版本號,例如預置版本號可以是Android版本4.2.2,或者低于Android版本4.2.2,通過對當前使用的操作系統(tǒng)的版本號進行判斷從而可以快速確定出當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合。

103、若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制。

在本發(fā)明實施例中,針對上述步驟102中可以采用的判斷方式1和判斷方式2,在每種判斷方式下都可以輸出各自對應的判斷結果,對于判斷方式1,若對應的判斷結果為當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,則可以觸發(fā)執(zhí)行步驟103,對于判斷方式2,若對應的判斷結果為GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,則可以觸發(fā)執(zhí)行步驟103。本發(fā)明實施例中,若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,則說明當前正在使用的移動終端因緩存的頂點數(shù)據(jù)過小,或GPU、操作系統(tǒng)的版本或類型問題,會出現(xiàn)圖片顯示不流暢或者掉幀問題,本發(fā)明實施例中對于上述存在問題的移動終端,仍可以對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制,因此繪制合并功能可以開啟,從而減少對CPU的消耗。

在本發(fā)明的一些實施例中,步驟102執(zhí)行之后,對于步驟102中可以采用的判斷方式1和判斷方式2,在每種判斷方式下都可以輸出各自對應的判斷結果,步驟102之后除了執(zhí)行步驟103和步驟104,在本發(fā)明提供的渲染優(yōu)化方法中還可以執(zhí)行如下步驟:

B1、若GPU不屬于邏輯類型集合,和/或當前使用的操作系統(tǒng)不屬于系統(tǒng)類型集合,對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

B2、將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存同步到顯卡內存中,再將顯卡內存中的頂點數(shù)據(jù)發(fā)送給圖形渲染應用程序接口。

其中,若GPU不屬于邏輯類型集合,和/或當前使用的操作系統(tǒng)不屬于系統(tǒng)類型集合,則說明當前正在使用的移動終端的GPU、操作系統(tǒng)符合正常機型的要求,對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制,從而通過執(zhí)行繪制合并功能,可以減少CPU消耗,節(jié)省終端電量。在步驟B1執(zhí)行之后,還可以進一步的執(zhí)行步驟B2,將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存同步到顯卡內存中,再將顯卡內存中的頂點數(shù)據(jù)發(fā)送給圖形渲染應用程序接口,通過顯卡內存來提交頂點數(shù)據(jù)到圖形渲染應用程序接口,可以減少系統(tǒng)內存到GPU的開銷。

進一步的,步驟B2中將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存同步到顯卡內存中,再將顯卡內存中的頂點數(shù)據(jù)發(fā)送給圖形渲染應用程序接口,具體可以包括如下步驟:

B21、從系統(tǒng)內存中獲取到每個渲染命令關聯(lián)的頂點數(shù)據(jù),將獲取到的頂點數(shù)據(jù)同步到頂點緩沖對象VBO中,調用glDraw*接口將VBO中的頂點數(shù)據(jù)提交給OpenGL。

其中,顯卡內存具體可以為顯卡中配置的VBO,則每個渲染命令關聯(lián)的頂點數(shù)據(jù)存儲到系統(tǒng)內存,通過OpenGL接口將glBufferData從系統(tǒng)內存同步到VBO中,圖形渲染應用程序接口具體可以為OpenGL,通過調用glDraw*接口可以將VBO內容提交給OpenGL。VBO可以在大容量情況下使用,減少系統(tǒng)內存到GPU的開銷。

104、將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口。

在本發(fā)明實施例中,將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口,因此每個渲染命令關聯(lián)的頂點數(shù)據(jù)是從系統(tǒng)內存直接發(fā)送給圖形渲染應用程序接口,而不再存儲到顯卡內存中,以避免圖片顯示不流暢或者掉幀問題。其中,步驟104是在前述步驟103中滿足“當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合”條件下進行的,因此對于問題機型的移動終端,本發(fā)明實施例中可以使用系統(tǒng)內存進行渲染繪制的優(yōu)化方案,頂點數(shù)據(jù)不需要從系統(tǒng)內存同步到顯卡內存中,也就不需要再將頂點數(shù)據(jù)從顯卡內存提交給圖形渲染應用程序接口,因此可以解決現(xiàn)有技術中通過顯卡內存緩存頂點數(shù)據(jù)造成的圖形顯示不流暢或者掉幀問題,從而使得繪制合并功能不需要區(qū)分各種類型的移動終端,而是都可以適用于各種類型的移動終端。

在本發(fā)明的一些實施例中,步驟104中的將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口,具體可以包括如下步驟:

C1、從系統(tǒng)內存中獲取到每個渲染命令關聯(lián)的頂點數(shù)據(jù),調用glDraw*接口將獲取到的頂點數(shù)據(jù)提交給OpenGL。

其中,圖形渲染應用程序接口具體可以為OpenGL,通過調用glDraw*接口可以將系統(tǒng)內存中的頂點數(shù)據(jù)提交給OpenGL,本發(fā)明實施例中可以使用系統(tǒng)內存進行渲染繪制的優(yōu)化方案,頂點數(shù)據(jù)不需要從系統(tǒng)內存同步到顯卡內存中,也就不需要再將頂點數(shù)據(jù)從顯卡內存提交給圖形渲染應用程序接口,因此可以解決現(xiàn)有技術中通過顯卡內存緩存頂點數(shù)據(jù)造成的圖形顯示不流暢或者掉幀問題。

在本發(fā)明的一些實施例中,步驟102執(zhí)行之后,對于步驟102中可以采用的判斷方式1和判斷方式2,在每種判斷方式下都可以輸出各自對應的判斷結果,步驟102之后除了執(zhí)行步驟103和步驟104,在本發(fā)明提供的渲染優(yōu)化方法中還可以執(zhí)行如下步驟:

D1、若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量大于頂點數(shù)據(jù)閾值,和GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

D2、將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口。

其中,針對上述步驟102中可以采用的判斷方式1和判斷方式2,在每種判斷方式下都可以輸出各自對應的判斷結果,對于判斷方式1,若對應的判斷結果為當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量大于頂點數(shù)據(jù)閾值,對于判斷方式2,若對應的判斷結果為GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,結合這兩種判斷結果,移動終端不屬于問題機型,并且當前緩存的頂點數(shù)據(jù)也大于頂點數(shù)據(jù)閾值,則可以按照步驟D1和步驟D2的方式進行頂點數(shù)據(jù)的提交,本發(fā)明實施例中可以使用系統(tǒng)內存進行渲染繪制的優(yōu)化方案,頂點數(shù)據(jù)不需要從系統(tǒng)內存同步到顯卡內存中,也就不需要再將頂點數(shù)據(jù)從顯卡內存提交給圖形渲染應用程序接口,因此可以解決現(xiàn)有技術中通過顯卡內存緩存頂點數(shù)據(jù)造成的圖形顯示不流暢或者掉幀問題。

進一步的,在本發(fā)明的一些實施例中,上述步驟中對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并之前,本發(fā)明實施例提供的渲染優(yōu)化方法還包括:

E1、根據(jù)每個渲染命令對應的渲染順序對多個渲染命令進行排序。

具體的,在進行批量繪制之前,還可以根據(jù)每個渲染命令對應的渲染順序進行排序,例如該渲染順序可以是z數(shù)據(jù),其中,z數(shù)據(jù)是垂直屏幕方向的數(shù)據(jù),用于層級排序。根據(jù)z數(shù)據(jù)對多個渲染命令進行一次排序,例如根據(jù)z數(shù)據(jù)大小從小到大排序。舉例說明,比如渲染背景的z數(shù)據(jù)為1,渲染按鈕的z數(shù)據(jù)為0,則排序后會先渲染背景再渲染按鈕。需要說明的是,渲染順序可以由游戲開發(fā)人員自己指定,也可以使用具體的工具生成,若渲染順序默認都是0,則可以按渲染命令插入隊列的先后順序作為渲染順序進行渲染。

通過以上實施例對本發(fā)明實施例的描述可知,在創(chuàng)建有多個渲染命令時,不立即進行繪制,而是分析當前緩存的頂點數(shù)據(jù)的數(shù)據(jù)量,以及分析顯卡采用的GPU的邏輯類型和當前使用操作系統(tǒng)的系統(tǒng)版本,再結合預置的頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合分別作出判斷,若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,則說明當前正在使用的移動終端因緩存的頂點數(shù)據(jù)過小,或GPU、操作系統(tǒng)的版本或類型問題,會出現(xiàn)圖片顯示不流暢或者掉幀問題,本發(fā)明實施例中對于上述存在問題的移動終端,仍可以對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制,因此繪制合并功能可以開啟,從而減少對CPU的消耗。對于存在當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合的情況,本發(fā)明實施例中,將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口,因此每個渲染命令關聯(lián)的頂點數(shù)據(jù)是從系統(tǒng)內存直接發(fā)送給圖形渲染應用程序接口,而不再存儲到顯卡內存中,以避免圖片顯示不流暢或者掉幀問題。

為便于更好的理解和實施本發(fā)明實施例的上述方案,下面舉例相應的應用場景來進行具體說明。

本發(fā)明實施例提供在特定的操作系統(tǒng)以及GPU下的優(yōu)化渲染性能方法,接下來以移動終端采用的操作系統(tǒng)為Android系統(tǒng)為例,特定機型移動終端可以為GPU使用powervr SGX544系列,Android版本為4.2.2及以下系統(tǒng)。本發(fā)明實施例提供的渲染優(yōu)化方法可以應用于多種機型的移動終端中顯示游戲程序的圖形界面,例如歡樂斗牛和歡樂斗地主中都采用實時渲染方式,每幀都會采用本發(fā)明的技術方案進行渲染優(yōu)化,包括游戲的所有顯示場景。

請參閱圖2所示,圖形渲染引擎的渲染流程示意圖,下面詳細說明實現(xiàn)流程:

1、Render發(fā)起繪制(Draw)請求。

2、RenderQueue會根據(jù)請求的繪制創(chuàng)建一個RenderCommand。

3、RenderCommand會根據(jù)使用到的紋理、shader以及渲染混合方式(例如Alpha混合、疊加混合等),生成唯一的materialID。

4、RenderQueue緩存生成的RenderCommand。

其中,步驟4之后的虛線代表相對應之前操作的返回或反饋。

5、Render發(fā)起繪制(Render)請求。

6、RenderQueue會計算所緩存的頂點數(shù)據(jù)的整體大小,也檢測當前的GPU是否PVR SGX544系列GPU且Android系統(tǒng)是4.2.2及以下,設定條件A為緩存的頂點數(shù)據(jù)大小小于等于4K,或者當前GPU為PVR SGX544系列、Android系統(tǒng)為4.2.2及以下。

7、RenderQueue會根據(jù)z數(shù)據(jù)對緩存的所有RenderCommand進行排序。

其中,z數(shù)據(jù)可以表示一種渲染順序,比如渲染背景的z數(shù)據(jù)為1,渲染按鈕的z數(shù)據(jù)為0,則排序后會先渲染背景再渲染按鈕。

8、如果符合條件A,對合并的多個RenderCommand進行繪制。

如圖3所示,為本發(fā)明實施例提供的頂點數(shù)據(jù)在系統(tǒng)內存中的存儲過程示意圖。每個顯示圖片的繪制都需要生成一個繪制命令,繪制時會把所有繪制命令緩存下來,在批量繪制前進行排序,然后將排序后的繪制命令中所有頂點數(shù)據(jù)保存在一片連續(xù)的系統(tǒng)內存中。在繪制前會進行合并批次判斷,根據(jù)材質標識(Material ID)來決定不同的頂點數(shù)據(jù)是否在同一個批次進行繪制,從而就可以減少圖形渲染時的繪制調用,因此就能減少CPU消耗,使得系統(tǒng)更流暢,更省電。舉例說明,共有8個渲染命令,每個渲染命令管理的頂點數(shù)據(jù)分別為:Quad0、Quad1、Quad2、Quad3、Quad4、Quad5、Quad6、Quad7,其中,Quad0、Quad1、Quad2、Quad3對應的材質標識為Material0,Quad4對應的材質標識為Material1,Quad5、Quad6、Quad7對應的材質標識為Material2,則Quad0、Quad1、Quad2、Quad3可以進行批量繪制,Quad5、Quad6、Quad7可以進行批量繪制。

9、RenderCommand會將自身相關的頂點數(shù)據(jù)(例如Quad四邊形數(shù)據(jù))拷貝到連續(xù)的系統(tǒng)內存中。

其中,Quad指的是渲染中代表一個四邊形數(shù)據(jù),有4個頂點。

10、不再同步到VBO中,直接使用系統(tǒng)內存數(shù)據(jù)調用glDraw*接口提交給OpenGL。

其中,步驟10之后的虛線代表相對應之前操作的返回或反饋。

11、如果不符合條件A,對合并的多個RenderCommand進行繪制。

12、RenderCommand會將自身相關的Quad四邊形數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中。

13、拷貝完畢后通過OpenGL接口glBufferData將系統(tǒng)內存內容同步到VBO中。

14、通過glDraw*接口將VBO內容提交給OpenGL。

如圖4所示,為本發(fā)明實施例提供的頂點數(shù)據(jù)存儲在VBO中的實現(xiàn)場景示意圖。VBO是OpenGL中一種內存方式,一般放置在顯存中,用于保存頂點數(shù)據(jù),IBO是OpenGL中一種內存方式,一般放置在顯存中,用于保存索引數(shù)據(jù),虛線框內的Mem_index和Mem_quad這兩種數(shù)據(jù)都放在系統(tǒng)內存中,非虛線框的IBO和VBO一般放置在顯卡內存中,Mem_quad中保存的頂點數(shù)據(jù)是vertex0、vertex1、vertex2、vertex3,Mem_index中保存的索引數(shù)據(jù)為0、1、2、3、2、1,則索引相同的對應于相同的頂點數(shù)據(jù),glBufferData從系統(tǒng)內存同步到VBO中,VBO中保存的頂點數(shù)據(jù)是vertex0、vertex1、vertex2、vertex3,IBO中保存的索引數(shù)據(jù)為0、1、2、3、2、1,則索引相同的對應于相同的頂點數(shù)據(jù)。

請參閱圖5所示,為本發(fā)明實施例提供的渲染優(yōu)化方法的一種應用場景示意圖。與前述圖2所示實施例不同的是圖3所示中判斷頂點數(shù)據(jù)的大小以及GPU、操作系統(tǒng)的判斷之間可以具有先后順序,實現(xiàn)過程如下:首先發(fā)起繪制請求,然后緩存所有的繪制命令,接下來計算頂點數(shù)據(jù)的大小,然后判斷頂點數(shù)據(jù)的大小是否小于4096字節(jié),如果小于或等于4096字節(jié),切換到Draw Mem方式進行繪制,即使用系統(tǒng)內存進行渲染繪制的優(yōu)化方案,如果頂點數(shù)據(jù)的大小大于4096字節(jié),則繼續(xù)判斷當前的GPU是否屬于PVR SGX544,以及判斷當前的操作系統(tǒng)的版本是否小于或等于Android4.2.2,如果是,則切換到Draw Mem方式進行繪制,即使用系統(tǒng)內存進行渲染繪制的優(yōu)化方案,如果不滿足PVR SGX544,以及小于或等于Android4.2.2的要求,則可以使用Draw VBO進行繪制,即可以執(zhí)行前述步驟11至13的實現(xiàn)方式。

本發(fā)明實施例中,Render發(fā)起一次渲染調用,將當前渲染命令緩存下來不立即進行渲染,計算當前緩存的頂點數(shù)據(jù)大小,如果小于等于4K直接使用系統(tǒng)內存方式提交給OpenGL渲染,如果大于4K則檢測GPU是否PVRSGX544系列且Android系統(tǒng)是4.2.2及以下,檢測符合問題gpu和系統(tǒng)組合則直接使用系統(tǒng)內存方式提交給OpenGL渲染,否則使用vbo方式渲染。

通過前述舉例說明可知,本發(fā)明實施例中新增使用系統(tǒng)內存緩存所有頂點和索引數(shù)據(jù),直接提交給OpenGL進行繪制,計算緩存的所有頂點數(shù)據(jù)大小,如果小于4096字節(jié),也會切換到mem方式進行繪制,否則使用vbo繪制方式,新增檢測Android版本以及gpu類型邏輯,判斷如果當前Android版本小于等于4.2.2且gpu型號為powervr SGX544系列,則直接使用mem方式進行繪制。解決了問題機型上顯示不流暢掉幀問題,完善drawcall合并方案可以在所有Android機型上統(tǒng)一開啟,Drawcall的合并能降低CPU占用,能夠支撐更多業(yè)務要求。

需要說明的是,對于前述的各方法實施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領域技術人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其他順序或者同時進行。其次,本領域技術人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。

為便于更好的實施本發(fā)明實施例的上述方案,下面還提供用于實施上述方案的相關裝置。

請參閱圖6-a所示,本發(fā)明實施例提供的一種渲染優(yōu)化裝置600,可以包括:創(chuàng)建模塊601、判斷模塊602、繪制模塊603、發(fā)送模塊604,其中,

創(chuàng)建模塊601,用于根據(jù)多個繪制請求創(chuàng)建多個渲染命令,其中,每個渲染命令關聯(lián)有對應的頂點數(shù)據(jù),所述渲染命令包括:紋理貼圖、顯卡腳本數(shù)據(jù)、混合函數(shù)類型和材質標識;

判斷模塊602,用于對所述多個渲染命令和每個渲染命令關聯(lián)的頂點數(shù)據(jù)進行緩存,然后執(zhí)行如下兩種判斷方式中的至少一種判斷方式:判斷當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量是否大于頂點數(shù)據(jù)閾值,判斷顯卡的圖形處理器GPU是否屬于預置的邏輯類型集合且判斷當前使用的操作系統(tǒng)是否屬于預置的系統(tǒng)類型集合;

繪制模塊603,用于若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于所述頂點數(shù)據(jù)閾值,和/或所述GPU屬于所述邏輯類型集合且所述當前使用的操作系統(tǒng)屬于所述系統(tǒng)類型集合,對所述多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

發(fā)送模塊604,用于將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將所述每個渲染命令關聯(lián)的頂點數(shù)據(jù)從所述系統(tǒng)內存發(fā)送給圖形渲染應用程序接口。

在本發(fā)明的一些實施例中,所述繪制模塊603,還用于若所述GPU不屬于所述邏輯類型集合,和/或所述當前使用的操作系統(tǒng)不屬于所述系統(tǒng)類型集合,對所述多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

所述發(fā)送模塊604,還用于將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將所述每個渲染命令關聯(lián)的頂點數(shù)據(jù)從所述系統(tǒng)內存同步到顯卡內存中,再將所述顯卡內存中的頂點數(shù)據(jù)發(fā)送給圖形渲染應用程序接口。

在本發(fā)明的一些實施例中,所述發(fā)送模塊604,具體用于從所述系統(tǒng)內存中獲取到所述每個渲染命令關聯(lián)的頂點數(shù)據(jù),將獲取到的頂點數(shù)據(jù)同步到頂點緩沖對象VBO中,調用glDraw*接口將所述VBO中的頂點數(shù)據(jù)提交給OpenGL。

在本發(fā)明的一些實施例中,所述繪制模塊603,還用于若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量大于所述頂點數(shù)據(jù)閾值,和所述GPU屬于所述邏輯類型集合且所述當前使用的操作系統(tǒng)屬于所述系統(tǒng)類型集合,對所述多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制;

所述發(fā)送模塊604,還用于將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將所述每個渲染命令關聯(lián)的頂點數(shù)據(jù)從所述系統(tǒng)內存發(fā)送給圖形渲染應用程序接口。

在本發(fā)明的一些實施例中,請參閱圖6-b所示,所述渲染優(yōu)化裝置600,還包括:排序模塊605,用于所述繪制模塊603對所述多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并之前,根據(jù)每個渲染命令對應的渲染順序對所述多個渲染命令進行排序。

在本發(fā)明的一些實施例中,所述判斷模塊602,具體用于判斷當前使用的操作系統(tǒng)的版本號是否小于或等于預置版本號,若當前使用的操作系統(tǒng)的版本號小于或等于所述預置版本號,則確定所述當前使用的操作系統(tǒng)屬于所述系統(tǒng)類型集合,若當前使用的操作系統(tǒng)的版本號大于所述預置版本號,則確定所述當前使用的操作系統(tǒng)不屬于所述系統(tǒng)類型集合。

在本發(fā)明的一些實施例中,所述發(fā)送模塊604,具體用于從所述系統(tǒng)內存中獲取到所述每個渲染命令關聯(lián)的頂點數(shù)據(jù),調用glDraw*接口將獲取到的頂點數(shù)據(jù)提交給OpenGL。

通過以上對本發(fā)明實施例的描述可知,在創(chuàng)建有多個渲染命令時,不立即進行繪制,而是分析當前緩存的頂點數(shù)據(jù)的數(shù)據(jù)量,以及分析顯卡采用的GPU的邏輯類型和當前使用操作系統(tǒng)的系統(tǒng)版本,再結合預置的頂點數(shù)據(jù)閾值、邏輯類型集合、系統(tǒng)類型集合分別作出判斷,若當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合,則說明當前正在使用的移動終端因緩存的頂點數(shù)據(jù)過小,或GPU、操作系統(tǒng)的版本或類型問題,會出現(xiàn)圖片顯示不流暢或者掉幀問題,本發(fā)明實施例中對于上述存在問題的移動終端,仍可以對多個渲染命令中具有相同材質標識的至少兩個渲染命令進行合并,然后對合并后的所有渲染命令進行繪制,因此繪制合并功能可以開啟,從而減少對CPU的消耗。對于存在當前緩存下來的頂點數(shù)據(jù)的數(shù)據(jù)量小于或等于頂點數(shù)據(jù)閾值,和/或GPU屬于邏輯類型集合且當前使用的操作系統(tǒng)屬于系統(tǒng)類型集合的情況,本發(fā)明實施例中,將每個渲染命令關聯(lián)的頂點數(shù)據(jù)拷貝到連續(xù)的系統(tǒng)內存中,然后將每個渲染命令關聯(lián)的頂點數(shù)據(jù)從系統(tǒng)內存發(fā)送給圖形渲染應用程序接口,因此每個渲染命令關聯(lián)的頂點數(shù)據(jù)是從系統(tǒng)內存直接發(fā)送給圖形渲染應用程序接口,而不再存儲到顯卡內存中,以避免圖片顯示不流暢或者掉幀問題。

本發(fā)明實施例還提供了另一種終端,如圖7所示,為了便于說明,僅示出了與本發(fā)明實施例相關的部分,具體技術細節(jié)未揭示的,請參照本發(fā)明實施例方法部分。該終端可以為包括手機、平板電腦、PDA(Personal Digital Assistant,個人數(shù)字助理)、POS(Point of Sales,銷售終端)、車載電腦等任意終端設備,以終端為手機為例:

圖7示出的是與本發(fā)明實施例提供的終端相關的手機的部分結構的框圖。參考圖7,手機包括:射頻(Radio Frequency,RF)電路1010、存儲器1020、輸入單元1030、顯示單元1040、傳感器1050、音頻電路1060、無線保真(wireless fidelity,WiFi)模塊1070、處理器1080、以及電源1090等部件。本領域技術人員可以理解,圖7中示出的手機結構并不構成對手機的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。

下面結合圖7對手機的各個構成部件進行具體的介紹:

RF電路1010可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器1080處理;另外,將設計上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路1010包括但不限于天線、至少一個放大器、收發(fā)信機、耦合器、低噪聲放大器(Low Noise Amplifier,LNA)、雙工器等。此外,RF電路1010還可以通過無線通信與網(wǎng)絡和其他設備通信。上述無線通信可以使用任一通信標準或協(xié)議,包括但不限于全球移動通訊系統(tǒng)(Global System of Mobile communication,GSM)、通用分組無線服務(General Packet Radio Service,GPRS)、碼分多址(Code Division Multiple Access,CDMA)、寬帶碼分多址(Wideband Code Division Multiple Access,WCDMA)、長期演進(Long Term Evolution,LTE)、電子郵件、短消息服務(Short Messaging Service,SMS)等。

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

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

顯示單元1040可用于顯示由用戶輸入的信息或提供給用戶的信息以及手機的各種菜單。顯示單元1040可包括顯示面板1041,可選的,可以采用液晶顯示器(Liquid Crystal Display,LCD)、有機發(fā)光二極管(Organic Light-Emitting Diode,OLED)等形式來配置顯示面板1041。進一步的,觸控面板1031可覆蓋顯示面板1041,當觸控面板1031檢測到在其上或附近的觸摸操作后,傳送給處理器1080以確定觸摸事件的類型,隨后處理器1080根據(jù)觸摸事件的類型在顯示面板1041上提供相應的視覺輸出。雖然在圖7中,觸控面板1031與顯示面板1041是作為兩個獨立的部件來實現(xiàn)手機的輸入和輸入功能,但是在某些實施例中,可以將觸控面板1031與顯示面板1041集成而實現(xiàn)手機的輸入和輸出功能。

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

音頻電路1060、揚聲器1061,傳聲器1062可提供用戶與手機之間的音頻接口。音頻電路1060可將接收到的音頻數(shù)據(jù)轉換后的電信號,傳輸?shù)綋P聲器1061,由揚聲器1061轉換為聲音信號輸出;另一方面,傳聲器1062將收集的聲音信號轉換為電信號,由音頻電路1060接收后轉換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1080處理后,經(jīng)RF電路1010以發(fā)送給比如另一手機,或者將音頻數(shù)據(jù)輸出至存儲器1020以便進一步處理。

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

處理器1080是手機的控制中心,利用各種接口和線路連接整個手機的各個部分,通過運行或執(zhí)行存儲在存儲器1020內的軟件程序和/或模塊,以及調用存儲在存儲器1020內的數(shù)據(jù),執(zhí)行手機的各種功能和處理數(shù)據(jù),從而對手機進行整體監(jiān)控??蛇x的,處理器1080可包括一個或多個處理單元;優(yōu)選的,處理器1080可集成應用處理器和調制解調處理器,其中,應用處理器主要處理操作系統(tǒng)、用戶界面和應用程序等,調制解調處理器主要處理無線通信。可以理解的是,上述調制解調處理器也可以不集成到處理器1080中。

手機還包括給各個部件供電的電源1090(比如電池),優(yōu)選的,電源可以通過電源管理系統(tǒng)與處理器1080邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。

盡管未示出,手機還可以包括攝像頭、藍牙模塊等,在此不再贅述。

在本發(fā)明實施例中,該終端所包括的處理器1080還具有控制執(zhí)行以上由終端執(zhí)行的渲染優(yōu)化方法流程。

另外需說明的是,以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。另外,本發(fā)明提供的裝置實施例附圖中,模塊之間的連接關系表示它們之間具有通信連接,具體可以實現(xiàn)為一條或多條通信總線或信號線。本領域普通技術人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。

通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來實現(xiàn),當然也可以通過專用硬件包括專用集成電路、專用CPU、專用存儲器、專用元器件等來實現(xiàn)。一般情況下,凡由計算機程序完成的功能都可以很容易地用相應的硬件來實現(xiàn),而且,用來實現(xiàn)同一功能的具體硬件結構也可以是多種多樣的,例如模擬電路、數(shù)字電路或專用電路等。但是,對本發(fā)明而言更多情況下軟件程序實現(xiàn)是更佳的實施方式?;谶@樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在可讀取的存儲介質中,如計算機的軟盤、U盤、移動硬盤、只讀存儲器(ROM,Read-Only Memory)、隨機存取存儲器(RAM,Random Access Memory)、磁碟或者光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。

綜上所述,以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照上述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對上述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發(fā)明各實施例技術方案的精神和范圍。

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