TWI597685B - 渲染方法和裝置 - Google Patents
渲染方法和裝置 Download PDFInfo
- Publication number
- TWI597685B TWI597685B TW102113716A TW102113716A TWI597685B TW I597685 B TWI597685 B TW I597685B TW 102113716 A TW102113716 A TW 102113716A TW 102113716 A TW102113716 A TW 102113716A TW I597685 B TWI597685 B TW I597685B
- Authority
- TW
- Taiwan
- Prior art keywords
- view
- visible
- buffer memory
- views
- rendering
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/14—Display of multiple viewports
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
- G09G5/395—Arrangements specially adapted for transferring the contents of the bit-mapped memory to the screen
- G09G5/397—Arrangements specially adapted for transferring the contents of two or more bit-mapped memories to the screen simultaneously, e.g. for mixing or overlay
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Image Generation (AREA)
Description
本發明涉及一種渲染方法和裝置。
一般的畫圖模組(Surface Flinger)的渲染方法都是單緩衝記憶體的,就是所有上層應用的視圖(Surface)都被渲染到一個緩衝記憶體中。在渲染時通常是某個上層應用向Surface Flinger發出渲染請求,Surface Flinger回應請求並獲得該應用的Surface渲染至硬體緩衝記憶體(Frame Buffer),最終顯示給用戶。
單緩衝記憶體的渲染在實際應用時,往往一個系統存在多個上層應用,一個上層應用發生變化,有可能導致其他上層應用的Surface都發生變化,比如多個上層應用相互覆蓋的情況。這種渲染方法在某個上層應用頻繁刷新的時,會大大影響整個系統效率。
本發明主要解決的技術問題是提供一種渲染方法和裝置,能夠減少因為某個上層應用刷新而受到影響需要重新渲染的視圖的個數,優化渲染性能,提高整個系統效率。
為解決上述技術問題,本發明採用的一個技術方案是:提供一種渲染的方法,包括:初始化畫圖模組(Surface Flinger),創建至少兩個緩衝記憶體;確定所有可視視圖(Surface)與所述至少兩個緩衝記憶體的對應關係,根據所述對應關係將所述所有可視視圖一一渲染至對應的緩衝記憶體,並將所有緩衝記憶體進行合成後輸出顯示;判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩衝記憶體;對所述找出的緩衝記憶體中需要進行渲染的可視視圖重新進行渲染,並將所述重新進行渲染後的緩衝記憶體與未重新進行渲染的緩衝記憶體進行合成後輸出顯示。
為解決上述技術問題,本發明採用的另一個技術方案是:提供一種渲染的裝置,包括:緩衝記憶體創建模組、第一渲染模組、判斷模組、第二渲染模組以及顯示模組:所述緩衝記憶體創建模組用於初始化畫圖模組,創建至少兩個緩衝記憶體;所述第一渲染模組用於確定所有可視視圖與所述緩衝記憶體創建模組創建的至少兩個緩衝記憶體的對應關係,根據所述對應關係將所述所有可視視圖一一渲染至對應的緩衝記憶體;所述判斷模組用於判斷是否有可視視圖發生變化;所述第二渲染模組用於當有可視視圖發生變化時,找出所述變化的可視視圖所在的緩衝記憶體,對所述找出的緩衝記憶體中需要進行渲染的可視視圖進行渲染;所述顯示模組用於在所述第一渲染模組或所述第二渲染模組完成渲染後,將所有緩衝記憶體進行合成後輸出顯示。
本發明的有益效果是:區別於現有技術的情況,本發明採用多個緩衝記憶體渲染,每個緩衝記憶體的渲染是獨立的。這樣當一個緩衝記憶體中的Surface發生變化時,只需要考慮其所在的緩衝記憶體中的Surface是否會受到其影響,極大的減少了因為某個上層應用需要渲染而受到影響的Surface個數,優化渲染性能,提高系統效率。
為了對本案之上述及其他方面有更佳的瞭解,下文特舉實施例,並配合所附圖式,作詳細說明如下:
S101~S105、S201~S205、S301~S306、S401~S408‧‧‧步驟
11‧‧‧緩衝記憶體創建模組
12‧‧‧第一渲染模組
13‧‧‧第二渲染模組
14‧‧‧顯示模組
15‧‧‧判斷模組
21‧‧‧第一創建單元
22‧‧‧第二創建單元
31‧‧‧獲取單元
32‧‧‧渲染單元
圖1是本發明渲染方法一實施方式的流程圖;圖2是本發明渲染方法一實施方式中確定所有可視視圖與至少兩個緩衝記憶體的對應關係的流程圖;圖3是本發明渲染方法一實施方式中對找出的緩衝記憶體中需要進行渲染的可視視圖進行渲染的流程圖;圖4是本發明渲染方法的具體應用一實施方式的流程圖;圖5是本發明渲染裝置一實施方式的結構示意圖;圖6是本發明渲染裝置一實施方式緩衝記憶體創建模組的結構示意圖;圖7是本發明渲染裝置一實施方式中第二渲染模組的結構示意圖。
參閱圖1,本發明渲染方法一實施方式包括:
步驟S101:初始化畫圖模組,創建至少兩個緩衝記憶體;
在一般的作業系統中,每一個應用打開前都需要進行渲染才能得到最終顯示給用戶的顯示效果。渲染是指將用戶設置的資料綜合計算,生成單幀圖像或一系列動畫圖像,並以用戶指定的方式輸出。在本發明實施方式中,渲染是指將應用程式視覺化的過程。比如安卓系統中,如果要打開某一個應用,會向安卓系統內部的畫圖模組(Surface Flinger)發送刷新請求,系統根據請求獲得該應用的視圖(Surface),將該視圖渲染到幀緩衝區,最終顯示給用戶。畫圖模組是系統用於畫圖的一個工具,而緩衝記憶體是畫圖模組本身產生的,應用的視圖最終渲染到緩衝記憶體中。在畫圖模組中,一個緩衝記憶體相當一個幀緩衝區的本地視窗(Frame Buffer Native Window)。因此,幀緩衝簡稱幀緩衝記憶體或顯存,它是螢幕所顯示畫面的一個直接映象,又稱為位映射圖(Bit Map)或光柵。幀緩衝記憶體的每一存儲單元對應螢幕上的一個圖元,整個幀緩衝記憶體對應一幀圖像。
在初始化畫圖模組的時候會創建一個顯示硬體設備(Display Hardware),然後通過顯示硬體設備創建至少兩個緩衝記憶體。而且,要求創建的緩衝記憶體的解析度均和當前作業系統的解析度相同。
步驟S102:確定所有可視視圖與至少兩個緩衝記憶
體的對應關係,將所有可視視圖一一渲染至對應的緩衝記憶體,並將所有緩衝記憶體進行合成後輸出顯示;
確定所有的可視視圖與所創建的所有緩衝記憶體的對應關係,根據對應關係將所有的可視視圖分別一一渲染到其對應的緩衝記憶體中。可視視圖是應用程式本身的東西,在打開一個應用程式時,必須對應用程式的可視視圖進行渲染,得到最終輸出給用戶的顯示效果。在渲染的過程中,從所有疊置的可視視圖的最底層往上依次渲染。通常採用Z軸深度值(Z-axis)來表示可視視圖的位置關係,Z-axis大的可視視圖在Z-axis小的可視視圖之上,因此渲染的時候從Z-axis最小的可視視圖開始渲染,按照Z-axis由小到大的順序對相應的可視視圖進行渲染。所有可視視圖都渲染完成後,將所有的緩衝記憶體進行混合合成後輸出顯示。混合合成是對已經完成渲染的視圖進行進一步的加工處理,使其能夠完美的達到需要的顯示效果。混合合成包括收集最後場景所需的各種資料,然後將一段動畫與另一段動畫合成、相接,在視頻中插入效果,製作轉場等,使最後顯示的畫面更加生動。
步驟S103:判斷是否有可視視圖發生變化;
判斷是否有可視視圖發生變化,當有可視視圖發生變化時,進行步驟S104,否則,不進行任何動作。
步驟S104:找出變化的可視視圖所在的緩衝記憶體;
完成步驟S101和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:將所有緩衝記憶體合成並輸出顯示。
當所有需要進行渲染的可視視圖已經全部完成渲染,則將所有緩衝記憶體合成並輸出顯示。
為了更清楚的闡述本發明的渲染方法,以下以安卓系統為例,詳細說明本發明渲染方法的應用過程。
安卓系統支援建立兩個緩衝記憶體,因此,在初始化畫圖模組後,創建一個顯示硬體設備,由顯示硬體設備創建第一緩衝記憶體和第二緩衝記憶體兩個緩衝記憶體,這兩個緩衝記憶體的解析度跟安卓作業系統解析度一樣。某個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用於判斷是否有可視視圖發生變化;當有可視視圖發生變化時,通知第二渲染模組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獲取的需要進行渲染的可視視圖進行髒區域計算,根據髒區域計算結果,從所有需要進行渲染的可視視圖的最底層往上依次將需要進行渲染的可視視圖渲染到當前的緩衝記憶體。
區別於現有技術的情況,本發明的優點在於:採用多個緩衝記憶體渲染,每個緩衝記憶體的渲染是獨立的。這樣當一個緩衝記憶體中的視圖發生變化時,只需要考慮其所在的緩衝
記憶體中的視圖是否會受到其影響,極大的減少了因為某個上層應用需要渲染而受到影響的視圖個數。而且在一個緩衝記憶體中的視圖發生變化需要重新渲染時,通過計算髒區域再進行渲染,減少渲染負擔,優化渲染性能,提高系統效率。
在本發明所提供的幾個實施方式中,應該理解到,所揭露的裝置和方法,可以通過其他的方式實現。例如,以上所描述的裝置實施方式僅僅是示意性的,例如,所述模組的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個模組或元件可以結合或者可以集成到另一個系統,或一些特徵可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些介面,裝置或單元的間接耦合或通信連接,可以是電性,機械或其他的形式。
所述作為分離部件說明的功能模組可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位於一個地方,或者也可以分佈到多個網路單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本發明方案的目的。
另外,在本發明各個實施方式中的各功能模組可以集成在一個處理單元中,也可以是各個功能模組單獨物理存在,也可以兩個或兩個以上功能模組集成在一個單元中。上述集成的單元既可以採用硬體的形式實現,也可以採用軟體功能單元的形式實現。
以上所述僅為本發明的實施方式,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。
S101~S105‧‧‧步驟
Claims (9)
- 一種渲染的方法,包括:初始化一畫圖模組,創建至少兩個緩衝記憶體;依據刷新頻率確定所有可視視圖與所述至少兩個緩衝記憶體的一對應關係,根據所述對應關係將所有可視視圖一一渲染至對應的緩衝記憶體,並將所有緩衝記憶體進行合成後輸出顯示;判斷是否有可視視圖發生變化,若有可視視圖發生變化,則找出變化的可視視圖所在的緩衝記憶體;對所述找出的緩衝記憶體中需要進行渲染的可視視圖重新進行渲染,並將所述重新進行渲染後的緩衝記憶體與未重新進行渲染的緩衝記憶體進行合成後輸出顯示。
- 根據申請專利範圍第1項所述的方法,其中,所述確定所有可視視圖與所述至少兩個緩衝記憶體的對應關係的步驟包括:獲取所有可視視圖,從所述所有可視視圖中找出一第一可視視圖,所述第一可視視圖為所有可視視圖中刷新頻率最高的一可視視圖;將所述第一可視視圖及在所述第一可視視圖之上的所有可視視圖對應到所述至少兩個緩衝記憶體的其中一個緩衝記憶體中;判斷將所述可視視圖對應到所述緩衝記憶體中的一次數是否到達一閾值,所述閾值為所述至少兩個緩衝記憶體的個數與1 之間的差值;以及若將所述可視視圖對應到所述緩衝記憶體中的所述次數未到達所述閾值,則繼續獲取剩下的所有所述可視視圖,從剩下的所述所有可視視圖中找出一第二可視視圖,所述第二可視視圖為所述剩下的所有可視視圖中刷新頻率最高的一可視視圖,將所述第二可視視圖及在所述第二可視視圖之上的所有可視視圖對應到所述至少兩個緩衝記憶體中的另外一個緩衝記憶體中,然後返回判斷將所述可視視圖對應到所述緩衝記憶體中的所述次數是否到達所述閾值的步驟;若將所述可視視圖對應到所述緩衝記憶體中的所述次數到達所述閾值,則將剩下的所有所述可視視圖對應到所述至少兩個緩衝記憶體的剩餘一個緩衝記憶體中,直到確定所述所有可視視圖與所述至少兩個緩衝記憶體的一一對應關係。
- 根據申請專利範圍第1項所述的方法,其中,所述初始化畫圖模組,創建至少兩個緩衝記憶體的步驟包括為:初始化所述畫圖模組,創建一顯示硬體設備;以及使所述顯示硬體設備創建至少兩個緩衝記憶體,所述至少兩個緩衝記憶體的解析度均與一當前作業系統的解析度相同。
- 根據申請專利範圍第1項所述的方法,其中,所述對找出的緩衝記憶體中需要進行渲染的可視視圖進行渲染的步驟包括: 從找出的所述緩衝記憶體中找到所述變化的可視視圖以及在所述變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖;獲取所述需要進行渲染的所有可視視圖中最底層的一可視視圖;對當前的所述最底層的可視視圖進行髒區域計算,根據髒區域計算結果將當前的所述最底層的可視視圖渲染至當前的緩衝記憶體;以及獲取剩下的所述需要進行渲染的可視視圖,重複以上步驟,直至完成將所有需要進行渲染的所述可視視圖渲染到對應的所述緩衝記憶體的步驟。
- 根據申請專利範圍第1項所述的方法,其中,根據所述對應關係將所述所有可視視圖一一渲染至所述對應的緩衝記憶體的步驟包括:根據所述對應關係,從所述所有可視視圖的最底層可視視圖依次往上將所有可視視圖一一渲染至對應的緩衝記憶體。
- 一種渲染裝置,包括一緩衝記憶體創建模組、一第一渲染模組、一判斷模組、一第二渲染模組以及一顯示模組:其中 所述緩衝記憶體創建模組用於初始化一畫圖模組,創建至少兩個緩衝記憶體;所述第一渲染模組用於依據刷新頻率確定所有可視視圖與所述緩衝記憶體創建模組創建的至少兩個緩衝記憶體的一對應關係,根據所述對應關係將所述所有可視視圖一一渲染至對應的緩衝記憶體;所述判斷模組用於判斷是否有可視視圖發生變化;所述第二渲染模組用於當有可視視圖發生變化時,找出所述變化的可視視圖所在的緩衝記憶體,對所述找出的緩衝記憶體中需要進行渲染的可視視圖進行渲染;以及所述顯示模組用於在所述第一渲染模組或所述第二渲染模組完成渲染後,將所有緩衝記憶體進行合成後輸出顯示。
- 根據申請專利範圍第6項所述的裝置,其中,所述緩衝記憶體創建模組包括一第一創建單元和一第二創建單元:所述第一創建單元用於初始化所述畫圖模組,創建一顯示硬體設備;所述第二創建單元用於利用所述第一創建單元創建的所述顯示硬體設備,創建至少兩個緩衝記憶體。
- 根據申請專利範圍第6項所述的裝置,其中,所述第二渲染模 組包括一獲取單元與一渲染單元,所述獲取單元用於在其中一個所述可視視圖發生變化時,找出所述變化的可視視圖所在的緩衝記憶體,從找出的緩衝記憶體中找到所述變化的可視視圖以及在所述變化的可視視圖之上的所有可視視圖作為需要進行渲染的可視視圖;以及所述渲染單元用於對所述需要進行渲染的可視視圖進行髒區域計算,根據髒區域計算結果將所述需要進行渲染的可視視圖渲染到當前的緩衝記憶體中。
- 根據申請專利範圍第6項所述的裝置,其中,所述第一渲染模組具體用於確定所有可視視圖與所述緩衝記憶體創建模組創建的至少兩個緩衝記憶體的所述對應關係,根據所述對應關係,從所述所有可視視圖的一最底層可視視圖依次往上將所有可視視圖一一渲染至對應的緩衝記憶體。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310116978.XA CN103247068B (zh) | 2013-04-03 | 2013-04-03 | 一种渲染方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201439969A TW201439969A (zh) | 2014-10-16 |
TWI597685B true TWI597685B (zh) | 2017-09-01 |
Family
ID=48926573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102113716A TWI597685B (zh) | 2013-04-03 | 2013-04-18 | 渲染方法和裝置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9760972B2 (zh) |
CN (1) | CN103247068B (zh) |
TW (1) | TWI597685B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI816433B (zh) * | 2022-06-14 | 2023-09-21 | 英業達股份有限公司 | 渲染方法、三維繪圖軟體及三維繪圖系統 |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544038B (zh) * | 2013-10-31 | 2017-10-24 | Tcl集团股份有限公司 | 一种基于4k2k系统的应用程序显示方法和装置 |
CN104809123B (zh) * | 2014-01-24 | 2019-03-26 | 北京猎豹移动科技有限公司 | 一种网页渲染方法及系统 |
CN105635805B (zh) * | 2015-12-18 | 2018-12-21 | 潍坊歌尔电子有限公司 | 一种虚拟现实场景中优化运动图像的方法和装置 |
CN111508055B (zh) * | 2019-01-30 | 2023-04-11 | 华为技术有限公司 | 渲染方法及装置 |
CN110517184A (zh) * | 2019-07-25 | 2019-11-29 | 武汉蓝星科技股份有限公司 | 一种基于屏幕分层的图形显示方法及装置 |
CN111309430B (zh) * | 2020-03-16 | 2021-12-10 | 广东趣炫网络股份有限公司 | 一种自动缓存用户交互界面节点的方法和相关装置 |
CN113099309A (zh) * | 2021-03-30 | 2021-07-09 | 上海哔哩哔哩科技有限公司 | 视频处理方法及装置 |
CN112950757B (zh) * | 2021-03-30 | 2023-03-14 | 上海哔哩哔哩科技有限公司 | 图像渲染方法及装置 |
CN115237413B (zh) * | 2022-09-22 | 2023-02-24 | 北京达佳互联信息技术有限公司 | 一种列表处理方法、装置、电子设备及存储介质 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7477205B1 (en) * | 2002-11-05 | 2009-01-13 | Nvidia Corporation | Method and apparatus for displaying data from multiple frame buffers on one or more display devices |
US7724263B2 (en) | 2004-05-14 | 2010-05-25 | Nvidia Corporation | System and method for a universal data write unit in a 3-D graphics pipeline including generic cache memories |
JP4655218B2 (ja) * | 2005-09-16 | 2011-03-23 | ソニー株式会社 | 信号処理装置および方法、プログラム、並びに記録媒体 |
FR2896895B1 (fr) * | 2006-02-01 | 2008-09-26 | Redway Soc Par Actions Simplifiee | Procede de synthese d'une image virtuelle par lancer de faisceaux |
TWI339810B (en) * | 2006-03-08 | 2011-04-01 | Sony Corp | Image display apparatus and image display method |
US8766995B2 (en) * | 2006-04-26 | 2014-07-01 | Qualcomm Incorporated | Graphics system with configurable caches |
US8018472B2 (en) * | 2006-06-08 | 2011-09-13 | Qualcomm Incorporated | Blending multiple display layers |
TW200834461A (en) * | 2007-02-14 | 2008-08-16 | Brogent Technologies Inc | Multi-layer 2D layer dynamic display method and system thereof |
US8125495B2 (en) * | 2008-04-17 | 2012-02-28 | Microsoft Corporation | Displaying user interface elements having transparent effects |
CN101488333A (zh) * | 2009-01-22 | 2009-07-22 | 中兴通讯股份有限公司 | 一种图像显示设备及其显示输出方法 |
CN101847269B (zh) * | 2009-03-27 | 2011-11-09 | 上海科泰世纪科技有限公司 | 多图层动画渲染系统及方法 |
KR101314472B1 (ko) * | 2012-03-08 | 2013-10-07 | 주식회사 팬택 | 원격의 싱크 장치를 표시하는 방법, 이를 위한 소스 장치 및 시스템 |
-
2013
- 2013-04-03 CN CN201310116978.XA patent/CN103247068B/zh not_active Expired - Fee Related
- 2013-04-18 TW TW102113716A patent/TWI597685B/zh not_active IP Right Cessation
-
2014
- 2014-04-03 US US14/243,956 patent/US9760972B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI816433B (zh) * | 2022-06-14 | 2023-09-21 | 英業達股份有限公司 | 渲染方法、三維繪圖軟體及三維繪圖系統 |
Also Published As
Publication number | Publication date |
---|---|
CN103247068A (zh) | 2013-08-14 |
US20140300616A1 (en) | 2014-10-09 |
CN103247068B (zh) | 2016-03-30 |
TW201439969A (zh) | 2014-10-16 |
US9760972B2 (en) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI597685B (zh) | 渲染方法和裝置 | |
US11551422B2 (en) | Floorplan generation based on room scanning | |
CN106796718B (zh) | 用于高效深度图像变换的方法和设备 | |
CN107274338B (zh) | 用于深度图的低等待时间变形的系统、方法和装置 | |
JP4966431B2 (ja) | 画像処理装置 | |
CN109741463B (zh) | 虚拟现实场景的渲染方法、装置及设备 | |
US20230039100A1 (en) | Multi-layer reprojection techniques for augmented reality | |
CN104765594B (zh) | 一种显示图形用户界面的方法及装置 | |
US20190206119A1 (en) | Mixed reality display device | |
CN105550973B (zh) | 图形处理单元、图形处理系统及抗锯齿处理方法 | |
US11763478B1 (en) | Scan-based measurements | |
CN110599564A (zh) | 图像展示方法、装置、计算机设备和存储介质 | |
KR20160050295A (ko) | 전자 장치 및 그의 디지털 수채 영상 재현 방법 | |
KR100860673B1 (ko) | 3차원 이미지 생성을 위한 이미지 생성 장치 및 방법 | |
TW454154B (en) | Method and apparatus for stretch blitting using a 3D pipeline | |
CN117557463A (zh) | 图像生成方法、装置、电子设备和存储介质 | |
JP2015049716A (ja) | パノラマ画像表示装置 | |
JP6898264B2 (ja) | 合成装置、方法及びプログラム | |
US11670045B2 (en) | Method and apparatus for constructing a 3D geometry | |
WO2020018134A1 (en) | Rendering 360 depth content | |
WO2011069285A1 (en) | Concave surface modeling in image-based visual hull | |
US9734579B1 (en) | Three-dimensional models visual differential | |
CN113301411B (zh) | 视频处理方法、装置及系统和视频处理设备 | |
CN113132556B (zh) | 视频处理方法、装置及系统和视频处理设备 | |
JP5782761B2 (ja) | 視差画像生成装置、視差画像生成方法、プログラム及び記憶媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees | ||
MM4A | Annulment or lapse of patent due to non-payment of fees |