新四季網

一種渲染方法和裝置的製作方法

2023-06-01 12:21:26

專利名稱:一種渲染方法和裝置的製作方法
技術領域:
本發明涉及一種渲染方法和裝置。
背景技術:
一般的畫圖模塊(Surface Flinger)的渲染方法都是單緩存的,就是所有上層應用的視圖(Surface)都被渲染到一個緩存中。在渲染時通常是某個上層應用向SurfaceFlinger發出渲染請求,Surface Flinger響應請求並獲得該應用的Surface渲染至硬體緩存(Frame Buffer),最終顯示給用戶。單緩存的渲染在實際應用時,往往一個系統存在多個上層應用,一個上層應用發生變化,有可能導致其他上層應用的Surface都發生變化,比如多個上層應用相互覆蓋的情況。這種渲染方法在某個上層應用頻繁刷新的時,會大大影響整個系統效率。

發明內容
本發明主要解決的技術問題是提供一種渲染方法和裝置,能夠減少因為某個上層應用刷新而受到影響需要重新渲染的視圖的個數,優化渲染性能,提高整個系統效率。為解決上述技術問題,本發明採用的一個技術方案是:提供一種渲染的方法,包括:初始化畫圖模塊(Surface Flinger),創建至少兩個緩存;確定所有可視視圖(Surface)與所述至少兩個緩存的對應關係,根據所述對應關係將所述所有可視視圖一一渲染至對應的緩存,並將所有緩存進行合成後輸出顯示;判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩存;對所述找出的緩存中需要進行渲染的可視視圖重新進行渲染,並將所述重新進行渲染後的緩存與未重新進行渲染的緩存進行合成後輸出顯示。其中,所述確定所有可視視圖與所述至少兩個緩存的對應關係的步驟包括:獲取所有可視視圖,從所述所有可視視圖中找出第一可視視圖,所述第一可視視圖為所有可視視圖中刷新頻率最高的可視視圖;將所述第一可視視圖及在所述第一可視視圖之上的所有可視視圖對應到所述至少兩個緩存的其中一個緩存中;判斷將可視視圖對應到緩存中的次數是否到達閾值,所述閾值為所述至少兩個緩存的個數與I之間的差值;若所述將可視視圖對應到緩存中的次數未到達閾值,則繼續獲取剩下的所有所述可視視圖,從剩下的所述所有可視視圖中找出第二可視視圖,所述第二可視視圖為所述剩下的所有所述可視視圖中刷新頻率最高的可視視圖,將所述第二可視視圖及在所述第二可視視圖之上的所有可視視圖對應到所述至少兩個緩存中的另外一個緩存中,然後返回所述判斷將可視視圖對應到緩存中的次數是否到達閾值的步驟 ;若所述將可視視圖對應到緩存中的次數到達所述閾值,則將剩下的所有所述可視視圖對應到所述至少兩個緩存的剩餘一個緩存中,直到確定所述所有可視視圖與所述至少兩個緩存的一一對應關係。其中,所述初始化畫圖模塊,創建至少兩個緩存的步驟包括為:初始化畫圖模塊,創建顯示硬設備(Display Hardware);使所述顯示硬設備創建至少兩個緩存,所述至少兩個緩存的解析度均與當前作業系統的解析度相同。其中,所述對找出的緩存中需要進行渲染的可視視圖進行渲染的步驟包括:從找出的緩存中找到所述變化的可視視圖以及在所述變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖;獲取所述需要進行渲染的所有可視視圖中最底層的可視視圖;對當前的所述最底層的可視視圖進行髒區域(Dirty Region)計算,根據髒區域計算結果將當前的所述最底層的可視視圖渲染至當前的緩存;獲取剩下的所述需要進行渲染的可視視圖,重複以上步驟,直至完成將所有所述需要進行渲染的可視視圖渲染到對應的緩存的步驟。其中,所述根據所述對應關係將所述所有可視視圖一一渲染至對應的緩存的步驟包括:根據所述對應關係,從所述所有可視視圖的最底層可視視圖依次往上將所有可視視
圖一一渲染至對應的緩存。為解決上述技術問題,本發明採用的另一個技術方案是:提供一種渲染的裝置,包括:包括緩存創建模塊、第一渲染模塊、判斷模塊、第二渲染模塊以及顯示模塊:所述緩存創建模塊用於初始化畫圖模塊,創建至少兩個緩存;所述第一渲染模塊用於確定所有可視視圖與所述緩存創建模塊創建的至少兩個緩存的對應關係,根據所述對應關係將所述所有可視視圖一一渲染至對應的緩存;所述判斷模塊用於判斷是否有可視視圖發生變化;所述第二渲染模塊用於當有可視視圖發生變化時,找出所述變化的可視視圖所在的緩存,對所述找出的緩存中需要進行渲染的可視視圖進行渲染;所述顯示模塊用於在所述第一渲染模塊或所述第二渲染模塊完成渲染後,將所有緩存進行合成後輸出顯示。其中,所述緩存創建模塊包括第一創建單元和第二創建單元,其中:所述第一創建單元用於初始化畫圖模塊,創建顯示硬設備;所述第二創建單元用於利用所述第一創建單元創建的顯示硬設備,創建至少兩個緩存。其中,所述 第二渲染模塊包括獲取單元和渲染單元,其中:所述獲取單元用於在其中一個所述可視視圖發生變化時,找出所述變化的可視視圖所在的緩存,從找出的緩存中找到所述變化的可視視圖以及在所述變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖;所述渲染單元用於對需要進行渲染的可視視圖進行髒區域計算,根據髒區域計算結果將需要進行渲染的可視視圖渲染到當前的緩存中。其中,所述第一渲染模塊具體用於確定所有可視視圖與所述緩存創建模塊創建的至少兩個緩存的對應關係,根據所述對應關係,從所述所有可視視圖的最底層可視視圖依次往上將所有可視視圖一一渲染至對應的緩存。本發明的有益效果是:區別於現有技術的情況,本發明採用多個緩存渲染,每個緩存的渲染是獨立的。這樣當一個緩存中的Surface發生變化時,只需要考慮其所在的緩存中的Surface是否會受到其影響,極大的減少了因為某個上層應用需要渲染而受到影響的Surface個數,優化渲染性能,提高系統效率。


圖1是本發明渲染方法一實施方式的流程圖;圖2是本發明渲染方法一實施方式中確定所有可視視圖與至少兩個緩存的對應關係的流程圖3是本發明渲染方法一實施方式中對找出的緩存中需要進行渲染的可視視圖進行渲染的流程圖;圖4是本發明渲染方法的具體應用一實施方式的流程圖;圖5是本發明渲染裝置一實施方式的結構示意圖;圖6是本發明渲染裝置一實施方式緩存創建模塊的結構示意圖;圖7是本發明渲染裝置一實施方式中第二渲染模塊的結構示意圖。
具體實施例方式參閱圖1,本發明渲染方法一實施方式包括:步驟SlOl:初始化畫圖模塊,創建至少兩個緩存;在一般的作業系統中,每一個應用打開前都需要進行渲染才能得到最終顯示給用戶的顯示效果。渲染是指將用戶設置的數據綜合計算,生成單幀圖像或一系列動畫圖像,並以用戶指定的方式輸出。在本發明實施方式中,渲染是指將應用程式可視化的過程。比如安卓系統中,如果要打開某一個應用,會向安卓系統內部的畫圖模塊(Surface Flinger)發送刷新請求,系統根據請求獲得該應用的視圖(Surface),將該視圖渲染到幀緩衝區,最終顯示給用戶。畫圖模塊是系統用於畫圖的一個工具,而緩存是畫圖模塊本身產生的,應用的視圖最終渲染到緩存中。在畫圖模塊中,一個緩存相當一個幀緩衝區的本地窗口(FrameBuffer Native Window)。因此,巾貞緩衝簡稱巾貞緩存或顯存,它是屏幕所顯示畫面的一個直接映象,又稱為位映射圖(Bit Map)或光柵。幀緩存的每一存儲單元對應屏幕上的一個像素,整個幀緩存對應一幀圖像。在初始化畫圖模塊的時候會創建一個顯示硬設備(Display Hardware),然後通過顯示硬設備創建至少兩個緩存。而且`,要求創建的緩存的解析度均和當前作業系統的解析度相同。步驟S102:確定所有可視視圖與至少兩個緩存的對應關係,將所有可視視圖一一渲染至對應的緩存,並將所有緩存進行合成後輸出顯示;確定所有的可視視圖與所創建的所有緩存的對應關係,根據對應關係將所有的可視視圖分別一一渲染到其對應的緩存中。可視視圖是應用程式本身的東西,在打開一個應用程式時,必須對應用程式的可視視圖進行渲染,得到最終輸出給用戶的顯示效果。在渲染的過程中,從所有疊置的可視視圖的最底層往上依次渲染。通常採用Z軸深度值(Z-axis)來表示可視視圖的位置關係,Z-axis大的可視視圖在Z-axis小的可視視圖之上,因此渲染的時候從Z-axis最小的可視視圖開始渲染,按照Z-axis由小到大的順序對相應的可視視圖進行渲染。所有可視視圖都渲染完成後,將所有的緩存進行混合合成後輸出顯示。混合合成是對已經完成渲染的視圖進行進一步的加工處理,使其能夠完美的達到需要的顯示效果。混合合成包括收集最後場景所需的各種資料,然後將一段動畫與另一段動畫合成、相接,在視頻中插入效果,製作轉場等,使最後顯示的畫面更加生動。步驟S103:判斷是否有可視視圖發生變化;判斷是否有可視視圖發生變化,當有可視視圖發生變化時,進行步驟S104,否則,不進行任何動作。步驟S104:找出變化的可視視圖所在的緩存;
完成步驟SlOl和S102之後,如果其中一個可視視圖發生變化,比如開機或者打開一個新的應用,這時需要對可視視圖重新進行渲染。而且,如果該變化的可視視圖及其渲染在一個緩存中的其他可視視圖存在重疊關係(包括直接和間接的重疊關係),則該其他可視視圖也需要進行重新渲染。因此,當一個可視視圖A發生變化時,首先找到可視視圖A所在的緩存。並且找出該緩存中與A存在重疊關係的其他可視視圖,A以及所有與A存在重疊關係的可視視圖都是需要重新渲染的可視視圖。步驟S105:對找出的緩存中需要進行渲染的可視視圖進行渲染,並將所有緩存進行合成後輸出顯示;對於找出的需要進行重新渲染的所有可視視圖進行渲染。該渲染過程也是從需要重新渲染的所有可視視圖的最底層往上依次渲染,直到所有需要渲染的可視視圖都渲染到當前的緩存中。然後將當前緩存與其他緩存進行混合合成後輸出顯示。區別於現有技術,通過上述實施方式的描述,本發明採用多個緩存渲染,每個緩存的渲染是獨立的。這樣當一個緩存中的視圖發生變化時,只需要考慮其所在的緩存中的視圖是否會受到其影響,僅對需 要重新渲染的緩存進行操作,極大的減少了因為某個上層應用需要渲染而受到影響的視圖個數,優化渲染性能,提高系統效率。其中,請參閱圖2,在另一實施方式中,確定所有可視視圖與至少兩個緩存的對應關係包括以下子步驟:子步驟S201:從所有可視視圖中找出刷新頻率最聞的可視視圖;獲取所有的可視視圖,從所有的可視視圖中找出刷新頻率最聞的可視視圖,為了便於區分,本發明中定義所有可視視圖中刷新頻率最高的可視視圖為第一可視視圖。以該可視視圖作為分界,獲取在該可視視圖之上的所有可視視圖,則該可視視圖與在該可視視圖之上的所有視圖作為一組,渲染到同一個緩存中。子步驟S202:將刷新頻率最高的可視視圖及其上的可視視圖對應到至少兩個緩存中的其中一個緩存中;將刷新頻率最高的可視視圖和在它之上的所有可視視圖對應到創建的緩存中的其中一個緩存中。通常情況下,視圖對應到哪個緩存由應用(Client)發送請求來指定,畫圖模塊只要根據Client的請求找到對應的視圖並設置渲染到Client指定的緩存即可。子步驟S203:判斷將可視視圖對應到緩存中的次數是否到達閾值;這裡的閾值是指建立的緩存的個數與一的差值。也就是說如果建立十個緩存,那麼閾值即為九。當完成子步驟S201和S202後,判斷將可視視圖對應到緩存中的次數是否到達閾值,如果到達閾值,則進行子步驟S205,如果沒有到達閾值,則進行子步驟S204。子步驟S204:繼續獲取剩下的所有可視視圖;如果將可視視圖對應到緩存中的次數沒有到達閾值,則獲取完成子步驟S202之後剩下的可視視圖,重新返回子步驟S201,按照同樣的方法劃分出另一組可視視圖,並對應到除已經對應有可視視圖的緩存之外的其他任意一個緩存中(也是根據Client的指定來設置)。以此類推,直到將所有可視視圖對應到緩存中的次數到達閾值為止。為了區分,本發明實施方式中定義從完成子步驟S202之後剩下的所有可視視圖中找出的刷新頻率最高的可視視圖為第二可視視圖。也就是說,第二可視視圖是為了跟所有可視視圖中刷新頻率最高的可視視圖(即第一可視視圖)區分而定義的,並不是具體的某一個可視視圖。在很多情況下,第二可視視圖可能是多個不同的可視視圖。子步驟S205:將剩下的所有可視視圖對應到至少兩個緩存的剩餘的一個緩存中;當將可視視圖對應到緩存中的次數到達閾值時,則將剩下的所有可視視圖對應到剩餘的一個緩存中,進而確定所有可視視圖與所有緩存的一一對應關係。以下通過舉例具體說明可視視圖與緩存確定對應關係的過程。比如有編號為0-100的101個可視視圖,當前建立4個緩存(編號為A、B、C、D),編號0-100表示可視視圖從下往上的位置關係,即編號為0的視圖是最底層可視視圖,編號為100的視圖是最上層可視視圖。首先找出100個可視視圖中刷新頻率最高的可視視圖,比如說是編號為50的可視視圖,那麼將編號為50-100的所有可視視圖對應到A、B、C、D中的任意一個緩存,假設對應到緩存B。這時將可視視圖對應到緩存中的次數為1,沒達到閾值3 (即緩存個數4-1=3),繼續對可視視圖進行分組;在剩下的編號為0-49的所有可視視圖中,再次找出刷新頻率最高的可視視圖,比方說是編號為30的可視視圖(即為上述的第二可視視圖),那麼將編號為30-49的所有可視視圖對應到剩下的A、C、D中的任意一個緩存,比方說對應到緩存C。這時將可視視圖對應到緩存中的次數為2,沒達到閾值3,繼續對可視視圖進行分組,在剩下的編號為0-29的所有可視視圖中,再次找出刷新頻率最高的可視視圖,比方說是編號為15的可視視圖(這裡即為另一個上述的第二可視視圖),那麼將編號為15-29的所有可視視圖對應到剩下的A、D中的任意一個緩衝,比如說對應到D。這時將可視視圖對應到緩存中的次數為3,達到閾值3,那麼不需要再對剩下的可視視圖進行分組;直接將其餘剩下的編號為0-14的可視視圖對應到緩存A中,完成所有可視視圖與所有緩存的一一對應關係確定。依次類推,對於更多個緩存的實施方式以相同的方法確定所有可視視圖與緩衝的對應關係。其中,請參閱圖3,在另一實施方式中,本發明對找出的緩存中需要進行渲染的可視視圖進行渲染包括以下子步驟:子步驟S301:從找出的緩存中找到變化的可視視圖及其上的可視視圖作為需要進行渲染的可視視圖; 如果其中一個可視視圖發生變化,會導致可視視圖需要重新進行渲染。而且,如果該變化的可視視圖及其渲染在一個緩存中的其他可視視圖存在重疊關係(包括直接和間接的重疊關係),則該其他可視視圖也需要進行重新渲染。因此,當一個可視視圖A發生變化時,首先找到可視視圖A所在的緩存。並且找出該緩存中與A存在重疊關係的其他可視視圖,A以及所有與A存在重疊關係的可視視圖都是需要重新渲染的可視視圖。子步驟S302:獲取需要進行渲染的可視視圖中的最底層的可視視圖;因為渲染過程是由最底層往上依次進行渲染,因此,從找出的需要重新進行渲染的可視視圖中獲取最底層的可視視圖,作為最先開始渲染的可視視圖。子步驟S303:對當前的最底層的可視視圖進行髒區域計算,根據髒區域計算結果將當前的最底層的可視視圖渲染至當前的緩存;對當前的最底層的可視視圖進行髒區域計算,髒區域計算是為了確定可視視圖需要渲染的區域。例如,假設一個可視視圖的位置為(0,0),寬為100,高為200,將該可視視圖移動到位置(0,50),則可視視圖移動到位置(0,50)發生變化的區域為位置(0,0),寬為150,高為200的區域。這時如果可視視圖與這個發生變化的區域有交集,則交集的部分即為髒區域。根據髒區域計算結果將當前的最底層的可視視圖渲染至當前的緩存。通過髒區域計算再進行渲染可以減輕渲染的負擔,比如一個視圖與變化的區域只有一小部分交集,只需要對這一小部分交集的區域進行渲染,避免整個視圖全部重新渲染的繁瑣。子步驟S304:判斷當前最底層的可視視圖是否為需要進行渲染的可視視圖中的最上層的可視視圖;當完成子步驟S303時,判斷當前最底層的可視視圖(及子步驟S303完成渲染的可視視圖)是否是需要進行渲染的可視視圖中的最上層的可視視圖,如果是,則判定需要進行渲染的可視視圖已經全部完成渲染,進入子步驟S306 ;如果不是,則判定需要進行渲染的可視視圖還沒有渲染完,則進入子步驟S305。子步驟S305:獲取剩下的需要進行渲染的可視視圖;如果當前最底層的可視視圖不是需要進行渲染的可視視圖的最上層可視視圖,則獲取剩下的需要進行渲染的可視視圖,重複進行子步驟S302及其後續的操作步驟,直到子步驟S304判定需要進行渲染的可視視圖已經全部完成渲染為止。子步驟S306:將所有緩存合成並輸出顯示。當所有需要進行渲染的可視視圖已經全部完成渲染,則將所有緩存合成並輸出顯
/Jn o為了更清楚的闡述本發明的渲染方法,以下以安卓系統為例,詳細說明本發明渲染方法的應用過程。安卓系統支持建立兩個緩存,因此,在初始化畫圖模塊後,創建一個顯示硬設備,由顯示硬設備創建第一 緩存和第二緩存兩個緩存,這兩個緩存的解析度跟安卓作業系統解析度一樣。某個Client向畫圖模塊發出請求,指出自己的刷新頻率最高,要求渲染到第一緩存中,這時畫圖模塊收到請求後,找到該Client對應的視圖,並將其設置為渲染到第一緩存中,然後畫圖模塊再將該視圖之上的視圖都設置渲染到第一緩存中。那麼剩下的在該視圖之下的其他視圖都設置渲染到第二緩存中。根據對應關係從最底層往上依次將可視視圖渲染到對應的緩存中。對於確定所有可視視圖與兩個緩存的對應關係的步驟跟上述實施方式中的方法相同,在此不在贅述。對於安卓系統,通過將所有可視視圖都渲染到兩個緩存後,如果其中一個可視視圖發生變化,對部分可視視圖需要進行重新渲染,其中,重新進行渲染的過程可參閱圖4,包括以下子步驟:子步驟S401:獲取需要進行渲染的所有可視視圖;當有其中一個可視視圖發生變化時,首先找到發生變化的可視視圖以及在發生變化的可視視圖之上的所有可視視圖,將發生變化的可視視圖與其上的可視視圖作為需要進行渲染的可視視圖。子步驟S402:獲取所有可視視圖中的最底層視圖;獲取需要進行渲染的所有可視視圖中的最底層的可視視圖,以該最底層的可視視圖作為最先開始渲染的視圖。子步驟S403:計算當前視圖的髒區域;計算最底層的可視視圖的髒區域,根據髒區域計算結果來進行渲染。子步驟S404:判斷當前視圖是否渲染至第一緩存;判斷當前的最底層的可視視圖是否是渲染到第一緩存,即發生變化的可視視圖在第一緩存還是第二緩存。如果是渲染到第一緩存則進行子步驟S405,如果不是渲染到第一緩存則進行子步驟S409。其中,子步驟S403和子步驟S404不嚴格區分先後順序,也就是說,可以先計算當前視圖的髒區域再判斷將當前視圖渲染到哪個緩存,也可以先判斷將當前視圖渲染到哪個緩存再對當前視圖進行髒區域計算。子步驟S405:將當前視圖渲染至第一緩存;根據髒區域計算結果將當前最底層的可視視圖渲染到第一緩存。子步驟S406:判斷當如視圖是否為所有可視視圖的最上層;判斷當前視圖是否為需要渲染的所有可視視圖的最上層,如果是,則進行子步驟S407,如果不是則進行子步驟S408。子步驟S407:第一緩存和第二緩存進行合成並輸出顯示;如果當前視圖為需要渲染的所有可視視圖的最上層,則將第一緩存和第二緩存進行混合合成並輸出顯示。子步驟S408:獲取當前視圖之上的視圖;如果當前視圖不是需要渲染的所有可視視圖的最上層,則獲取當前視圖之上的視圖,返回子步驟S402,重複子步驟S402以及其後續的操作步驟。子步驟S409:將當前視圖渲染至第二緩存;如果當前的最底層的可視視圖不是渲染到第一緩存,則根據髒區域計算結果將當前最底層的可視視圖渲染到第二緩存。完成子步驟S409後,轉入子步驟S406以及該步驟後續的操作步驟。當然,在實際應用過程中,只要完成需要進行渲染的可視視圖中的第一個最底層的可視視圖的渲染,在後續對其他需要進行渲染的可視視圖進行渲染時,可以直接將後續需要進行渲染的可視視圖渲染到跟第一個最底層的可視視圖相同的緩存中,省略判斷視圖渲染到第一緩存還是第二緩存的步驟。因為一個視圖發生變化時,只是跟發生變化的視圖在同一個緩存中的其他視圖可能會需要重新渲染,別的緩存中的視圖不會受到影響。請參閱圖5,本發明渲染裝置一實施方式包括緩存創建模塊11、第一渲染模塊12、判斷模塊15、第二渲染模塊13以及顯示模塊14,其中:緩存創建模塊11用於初始化畫圖模塊,創建至少兩個緩存;緩存創建模塊11用於根據需要創建至少兩個緩存,保證每個緩存的解析度跟當前作業系統的解析度相同。第一渲染模塊12用於確定所有可視視圖與緩存創建模塊11創建的至少兩個緩存的對應關係,根據對應 關係將所有可視視圖一一渲染至對應的緩存;第一渲染模塊12主要根據所有可視視圖與至少兩個緩存的對應關係將所有可視視圖從最底層往上一一渲染到對應的緩存中。判斷模塊15用於判斷是否有可視視圖發生變化;判斷模塊15用戶判斷是否有可視視圖發生變化,當有可視視圖發生變化時,通知第二渲染模塊13。第二渲染模塊13用於當有可視視圖發生變化時,找出變化的可視視圖所在的緩存,對找出的緩存中需要進行渲染的可視視圖進行渲染;
第二渲染模塊13用於建立至少兩個緩存將所有可視視圖渲染後,如果其中一個可視視圖發生變化,找到發生變化的視圖所在的緩存,從該緩存中找到需要進行渲染的可視視圖,從這些需要進行渲染的可視視圖的最底層往上依次進行渲染。顯不模塊14用於在第一渲染模塊12或第二渲染模塊13完成渲染後,將所有緩存進行合成後輸出顯示。顯示模塊14可以用於第一渲染模塊12完成所有的可視視圖渲染後,將所有的緩存合成後輸出顯示。顯示模塊14還可以用於在一個可視視圖發生變化時,第二渲染模塊13完成所有需要進行渲染的可視視圖的渲染後,將所有的緩存合成後輸出顯示。其中,請參閱圖6,緩存創建模塊還包括第一創建單元21和第二創建單元22,其中:第一創建單元21用於初始化畫圖模塊,創建顯示硬設備;第一創建單元21在初始化畫圖模塊後創建顯示硬設備。第二創建單元22用於利用所述第一創建單元21創建的顯示硬設備,創建至少兩個緩存。第二創建單元22可以利用顯示硬設備創建至少兩個緩存。其中,請參閱圖7,本發明第二渲染模塊包括獲取單元31和渲染單元32,其中:獲取單元31用於在其中一個可視視圖發生變化時,找出變化的可視視圖所在的緩存,從找出的緩存中找到變化的可視視圖以及在變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖;獲取單元31在一·個視圖發生變化時,找出變化的視圖所在的緩存,從該緩存中找到需要重新渲染的可視視圖。渲染單元32用於對需要進行渲染的可視視圖進行髒區域計算,根據髒區域計算結果將需要進行渲染的可視視圖渲染到當前的緩存中。渲染單元32用於對獲取單元31獲取的需要進行渲染的可視視圖進行髒區域計算,根據髒區域計算結果,從所有需要進行渲染的可視視圖的最底層往上依次將需要進行渲染的可視視圖渲染到當前的緩存。區別於現有技術的情況,本發明的優點在於:採用多個緩存渲染,每個緩存的渲染是獨立的。這樣當一個緩存中的視圖發生變化時,只需要考慮其所在的緩存中的視圖是否會受到其影響,極大的減少了因為某個上層應用需要渲染而受到影響的視圖個數。而且在一個緩存中的視圖發生變化需要重新渲染時,通過計算髒區域再進行渲染,減少渲染負擔,優化渲染性能,提高系統效率。在本發明所提供的幾個實施方式中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施方式僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個模塊或組件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的功能模塊可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本發明方案的目的。另外,在本發明各個實施方式中的各功能模塊可以集成在一個處理單元中,也可以是各個功能模塊單獨物理存在,也可以兩個或兩個以上功能模塊集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。以上所述僅為本發明的實施方式,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結 構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。
權利要求
1.一種渲染的方法,其特徵在於,包括: 初始化畫圖模塊,創建至少兩個緩存; 確定所有可視視圖與所述至少兩個緩存的對應關係,根據所述對應關係將所有可視視圖一一渲染至對應的緩存,並將所有緩存進行合成後輸出顯示; 判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩存; 對所述找出的緩存中需要進行渲染的可視視圖重新進行渲染,並將所述重新進行渲染後的緩存與未重新進行渲染的緩存進行合成後輸出顯示。
2.根據權利要求1所述的方法,其特徵在於,所述確定所有可視視圖與所述至少兩個緩存的對應關係的步驟包括: 獲取所有可視視圖,從所述所有可視視圖中找出第一可視視圖,所述第一可視視圖為所有可視視圖中刷新頻率最聞的可視視圖; 將所述第一可視視圖及在所述第一可視視圖之上的所有可視視圖對應到所述至少兩個緩存的其中一個緩存中; 判斷將可視視圖對應到緩存中的次數是否到達閾值,所述閾值為所述至少兩個緩存的個數與I之間的差值; 若所述將可視視圖對應到緩存中的次數未到達閾值,則繼續獲取剩下的所有所述可視視圖,從剩下的所述所有可視視圖中找出第二可視視圖,所述第二可視視圖為所述剩下的所有可視視圖中刷新頻率最高的可視視圖,將所述第二可視視圖及在所述第二可視視圖之上的所有可視視圖對應到所述至少兩個緩存中的另外一個緩存中,然後返回所述判斷將可視視圖對應到緩存中的次數是否到達閾值的步驟;若所述將可視視圖對應到緩存中的次數到達所述閾值,則將剩下的所有所述可視視圖對應到所述至少兩個緩存的剩餘一個緩存中,直到確定所述所有可視視圖與所述至少兩個緩存的一一對應關係。
3.根據權利要求1所述的方法,其特徵在於,所述初始化畫圖模塊,創建至少兩個緩存的步驟包括為: 初始化畫圖模塊,創建顯示硬設備; 使所述顯示硬設備創建至少兩個緩存,所述至少兩個緩存的解析度均與當前作業系統的解析度相同。
4.根據權利要求1所述的方法,其特徵在於,所述對找出的緩存中需要進行渲染的可視視圖進行渲染的步驟包括: 從找出的緩存中找到所述變化的可視視圖以及在所述變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖; 獲取所述需要進行渲染的所有可視視圖中最底層的可視視圖; 對當前的所述最底層的可視視圖進行髒區域計算,根據髒區域計算結果將當前的所述最底層的可視視圖渲染至當前的緩存; 獲取剩下的所述需要進行渲染的可視視圖,重複以上步驟,直至完成將所有所述需要進行渲染的可視視圖渲染到對應的緩存的步驟。
5.根據權利要求1所述的方法,其特徵在於,所述根據所述對應關係將所述所有可視視圖一一渲染 至對應的緩存的步驟包括:根據所述對應關係,從所述所有可視視圖的最底層可視視圖依次往上將所有可視視圖——渲染至對應的緩存。
6.一種渲染裝置,其特徵在於,包括緩存創建模塊、第一渲染模塊、判斷模塊、第二渲染模塊以及顯示模塊: 所述緩存創建模塊用於初始化畫圖模塊,創建至少兩個緩存; 所述第一渲染模塊用於確定所有可視視圖與所述緩存創建模塊創建的至少兩個緩存的對應關係,根據所述對應關係將所述所有可視視圖一一渲染至對應的緩存; 所述判斷模塊用於判斷是否有可視視圖發生變化; 所述第二渲染模塊用於當有可視視圖發生變化時,找出所述變化的可視視圖所在的緩存,對所述找出的緩存中需要進行渲染的可視視圖進行渲染; 所述顯示模塊用於在所述第一渲染模塊或所述第二渲染模塊完成渲染後,將所有緩存進行合成後輸出顯示。
7.根據權利要 求6所述的裝置,其特徵在於,所述緩存創建模塊包括第一創建單元和第二創建單元,其中: 所述第一創建單元用於初始化畫圖模塊,創建顯示硬設備; 所述第二創建單元用於利用所述第一創建單元創建的顯示硬設備,創建至少兩個緩存。
8.根據權利要求6所述的裝置,其特徵在於,所述第二渲染模塊包括獲取單元、渲染單元,其中: 所述獲取單元用於在其中一個所述可視視圖發生變化時,找出所述變化的可視視圖所在的緩存,從找出的緩存中找到所述變化的可視視圖以及在所述變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖; 所述渲染單元用於對所述需要進行渲染的可視視圖進行髒區域計算,根據髒區域計算結果將所述需要進行渲染的可視視圖渲染到當前的緩存中。
9.根據權利要求1所述的裝置,其特徵在於,所述第一渲染模塊具體用於確定所有可視視圖與所述緩存創建模塊創建的至少兩個緩存的對應關係,根據所述對應關係,從所述所有可視視圖的最底層可視視圖依次往上將所有可視視圖一一渲染至對應的緩存。
全文摘要
本發明公開了一種渲染方法、裝置和行動裝置。渲染方法包括初始化畫圖模塊,創建至少兩個緩存;確定所有可視視圖與至少兩個緩存的對應關係,根據對應關係將所有可視視圖一一渲染至對應的緩存,並將所有緩存進行合成後輸出顯示;判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩存;對找出的緩存中需要進行渲染的可視視圖重新進行渲染,並將重新進行渲染後的緩存與未重新進行渲染的緩存進行合成後輸出顯示。通過上述方式,本發明能夠減少因為某個上層應用刷新而受到影響需要重新渲染的視圖的個數,優化渲染性能,提高整個系統效率。
文檔編號G06T15/00GK103247068SQ201310116978
公開日2013年8月14日 申請日期2013年4月3日 優先權日2013年4月3日
發明者鄒健強 申請人:上海晨思電子科技有限公司, 晨星半導體股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀