本發明專利技術公開了一種渲染方法、裝置和移動設備。渲染方法包括:初始化畫圖模塊,創建至少兩個緩存;確定所有可視視圖與至少兩個緩存的對應關系,根據對應關系將所有可視視圖一一渲染至對應的緩存,并將所有緩存進行合成后輸出顯示;判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩存;對找出的緩存中需要進行渲染的可視視圖重新進行渲染,并將重新進行渲染后的緩存與未重新進行渲染的緩存進行合成后輸出顯示。通過上述方式,本發明專利技術能夠減少因為某個上層應用刷新而受到影響需要重新渲染的視圖的個數,優化渲染性能,提高整個系統效率。
【技術實現步驟摘要】
本專利技術涉及一種渲染方法和裝置。
技術介紹
一般的畫圖模塊(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)或光柵。幀緩存的每一存儲單元對應屏幕上的一個像素,整個幀緩存對應一幀圖像。在初始化畫圖模塊的時候會創建一個顯示硬本文檔來自技高網...
【技術保護點】
一種渲染的方法,其特征在于,包括:初始化畫圖模塊,創建至少兩個緩存;確定所有可視視圖與所述至少兩個緩存的對應關系,根據所述對應關系將所有可視視圖一一渲染至對應的緩存,并將所有緩存進行合成后輸出顯示;判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩存;對所述找出的緩存中需要進行渲染的可視視圖重新進行渲染,并將所述重新進行渲染后的緩存與未重新進行渲染的緩存進行合成后輸出顯示。
【技術特征摘要】
【專利技術屬性】
技術研發人員:鄒健強,
申請(專利權)人:上海晨思電子科技有限公司,晨星半導體股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。