一種3d應用的顯示刷新方法及系統的制作方法
【技術領域】
[0001]本發明涉及移動終端技術領域,尤其涉及的是一種3D應用的顯示刷新方法及系統。
【背景技術】
[0002]隨著移動終端技術的不斷發展,手機等移動終端的功能越來越多。現有智能手機功能十分豐富,基于3D的視覺體驗效果也越來越流行,越來越多的3D應用在嵌入式設備上運行起來。基于 OpenGL ES (OpenGL for Embedded Systems,是 OpenGL 三維圖形 API 的子集,針對手機、PDA和游戲主機等嵌入式設備而設計)的應用一般都是整個屏幕在不停的刷新,這樣在嵌入式設備上就會占用大量的CPU和GPU的資源,導致嵌入式設備功耗增加,系統性能降低,而且直接影響嵌入式設備電池的續航能力。
[0003]因此,現有技術還有待于改進和發展。
【發明內容】
[0004]本發明的目的在于提供一種3D應用的顯示刷新方法及系統,旨在解決現有的嵌入式設備在顯示3D應用顯示時,3D應用刷新占用大量的CPU和GPU的資源導致嵌入式設備功耗增加、系統性能降低及耗電量大的問題。
[0005]本發明解決技術問題所采用的技術方案如下:
一種3D應用的顯示刷新方法,其中,包括以下步驟:
A、保存3D應用進行顯示的上一次渲染結果,并根據所述上一次渲染結果生成對應的源紋理;
B、計算所述3D應用的當前屏幕顯示與上一次屏幕顯示相比屏幕發生變化的矩形區域;
C、根據所述矩形區域設置視口的偏移大小,重新計算投影矩陣,對所述矩形區域進行繪制,并將繪制結果生成對應的更新紋理;
D、將所述更新紋理與源紋理混合,繪制到所述視口,并更新顯示所述屏幕顯示,以完成3D應用的顯示刷新。
[0006]所述的3D應用的顯示刷新方法,其中,所述步驟A具體包括:
A1、創建一與終端顯示屏幕大小一樣、用于保存所述終端顯示屏幕顯示3D應用的上一次渲染結果的ΡΒ0 ;
A2、保存3D應用進行顯示的上一次渲染結果至所述ΡΒ0中,并將所述ΡΒ0保存的上一次渲染結果生成對應的源紋理。
[0007]所述的3D應用的顯示刷新方法,其中,所述步驟B具體包括:
B1、將所述3D應用的當前屏幕顯示與上一次屏幕顯示進行對比,將3D應用顯示的3D空間有變化的區域映射到屏幕的2D坐標;
B2、根據所述屏幕的2D坐標生成對應的矩形區域。
[0008]所述的3D應用的顯示刷新方法,其中,所述步驟C具體包括:
C1、調整視口的偏移大小到所述矩形區域中;
C2、確定視點的位置,采用近切面的偏移以及大小計算投影矩陣,根據投影矩陣確定投影的范圍,透視除法后獲取到規范化坐標[_1,1]之間;
C3、將所述投影矩陣縮小至需要更新的矩形區域中,繪制所述矩形區域對應的顯示界面;
C4、獲取視口繪制的矩形區域對應的繪制結果,并生成對應的更新紋理。
[0009]所述的3D應用的顯示刷新方法,其中,所述步驟D具體包括:
D1、將所述更新紋理與源紋理混合,并繪制到所述視口 ;
D2、在上一次屏幕顯示的基礎上更新顯示所述屏幕顯示,以完成3D應用的顯示刷新,并將刷新后的當前屏幕顯示結果發送至ΡΒ0保存。
[0010]一種3D應用的顯示刷新系統,其中,包括:
源紋理生成模塊,用于保存3D應用進行顯示的上一次渲染結果,并根據所述上一次渲染結果生成對應的源紋理;
矩形區域計算模塊,用于計算所述3D應用的當前屏幕顯示與上一次屏幕顯示相比屏幕發生變化的矩形區域;
更新紋理生成模塊,用于根據所述矩形區域設置視口的偏移大小,重新計算投影矩陣,對所述矩形區域進行繪制,并將繪制結果生成對應的更新紋理;
紋理混合顯示模塊,用于將所述更新紋理與源紋理混合,繪制到所述視口,并更新顯示所述屏幕顯示,以完成3D應用的顯示刷新。
[0011]所述的3D應用的顯示刷新系統,其中,所述源紋理生成模塊包括:
ΡΒ0創建單元,用于創建一與終端顯示屏幕大小一樣、用于保存所述終端顯示屏幕顯示3D應用的上一次渲染結果的ΡΒ0 ;
源紋理生成單元,用于保存3D應用進行顯示的上一次渲染結果至所述ΡΒ0中,并將所述ΡΒ0保存的上一次渲染結果生成對應的源紋理。
[0012]所述的3D應用的顯示刷新系統,其中,所述矩形區域計算模塊包括:
映射單元,用于將所述3D應用的當前屏幕顯示與上一次屏幕顯示進行對比,將3D應用顯示的3D空間有變化的區域映射到屏幕的2D坐標;
矩形區域生成單元,用于根據所述屏幕的2D坐標生成對應的矩形區域。
[0013]所述的3D應用的顯示刷新系統,其中,所述更新紋理生成模塊包括:
視口偏移單元,用于調整視口的偏移大小到所述矩形區域中;
投影矩陣計算單元,用于確定視點的位置,采用近切面的偏移以及大小計算投影矩陣,根據投影矩陣確定投影的范圍,透視除法后獲取到規范化坐標[-1,1]之間;
矩形區域繪制單元,用于將所述投影矩陣縮小至需要更新的矩形區域中,繪制所述矩形區域對應的顯示界面;
更新紋理生成單元,用于獲取視口繪制的矩形區域對應的繪制結果,并生成對應的更新紋理。
[0014]所述的3D應用的顯示刷新系統,其中,所述紋理混合顯示模塊包括:
紋理混合單元,用于將所述更新紋理與源紋理混合,并繪制到所述視口 ; 屏幕顯示更新單元,用于在上一次屏幕顯示的基礎上更新顯示所述屏幕顯示,以完成3D應用的顯示刷新,并將刷新后的當前屏幕顯示結果發送至PBO保存。
[0015]本發明所提供的一種3D應用的顯示刷新方法及系統,特別是基于OpenGL ES的3D應用顯示的局部刷新方法,有效地解決了現有的嵌入式設備在顯示3D應用顯示時,3D應用刷新占用大量的CPU和GPU的資源導致嵌入式設備功耗增加、系統性能降低及耗電量大的問題,通過保存3D應用進行顯示的上一次渲染結果,并根據所述上一次渲染結果生成對應的源紋理;計算所述3D應用的當前屏幕顯示與上一次屏幕顯示相比屏幕發生變化的矩形區域;根據所述矩形區域設置視口的偏移大小,重新計算投影矩陣,對所述矩形區域進行繪制,并將繪制結果生成對應的更新紋理;將所述更新紋理與源紋理混合,繪制到所述視口,并更新顯示所述屏幕顯示,以完成3D應用的顯示刷新;通過動態投影矩陣的計算,確定局部刷新的窗口大小,只針對屏幕顯示界面有所改動的區域進行刷新,提高了系統性能和用戶交互的響應速度,較大程度的降低了 GPU的占用率,平衡CPU和GPU的負載,提高了嵌入式系統的有效使用率,大大提高了幀率,提高了動畫的流暢度,顯著提高3D UI (User’sInterface,用戶界面,也稱人機界面)場景的渲染效率,在嵌入式平臺效果更加顯著,帶來了大大的方便。
【附圖說明】
[0016]圖1為本發明提供的3D應用的顯示刷新方法較佳實施例的流程圖。
[0017]圖2為本發明提供的3D應用的顯示刷新方法的原理示意圖。
[0018]圖3為全投影矩陣的原理示意圖。
[0019]圖4為局部投影矩陣的原理示意圖。
[0020]圖5為本發明提供的3D應用的顯示刷新系統較佳實施例的結構框圖。
【具體實施方式】
[0021]本發明提供一種3D應用的顯示刷新方法及系統,為使本發明的目的、技術方案及優點更加清楚、明確,以下參照附圖并舉實施例對本發明進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。
[0022]請參閱圖1,圖1為本發明提供3D應用的顯示刷新方法較佳實施例的流程圖,如圖所示,所述方法包括以下步驟:
步驟S100、保存3D應用進行顯示的上一次渲染結果,并根據所述上一次渲染結果生成對應的源紋理;
步驟S200、計算所述3D應用的當前屏幕顯示與上一次屏幕顯示相比屏幕發生變化的矩形區域;
步驟S