本申請提出一種渲染方法、裝置和系統,其中,該渲染方法,包括以下步驟:建立虛擬上下文對象,并建立虛擬上下文對象的屬性;監控虛擬上下文對象的屬性是否被修改;以及如果監控到虛擬上下文對象的屬性被修改,則根據修改的屬性生成心跳包,并向渲染引擎發送心跳包以激活渲染引擎,其中,渲染引擎在被激活之后根據修改的屬性進行渲染。本申請的渲染方法,在屬性被修改時,主動地通知渲染引擎進行渲染,從而不但能夠及時得到修改后的屬性對應的結果,使顯示結果更加流暢自然,并且在屬性未修改時,不進行渲染,避免了CPU、內存等資源的浪費。
【技術實現步驟摘要】
本申請涉及計算機
,特別涉及一種渲染方法、裝置和系統。
技術介紹
目前,渲染引擎主要采用mainloop主循環的方式來進行渲染。通過mainloop主循環的方式進行渲染主要是根據循環機制循環進行渲染,。也就是說,在mainloop主循環的方式進行渲染的過程中,無論對象的屬性是否發生改變,都是按照mainloop的循環渲染機制循環進行渲染,這就存在以下情況:在mainloop循環渲染的過程中,即使屬性沒有發生變換,仍然進行渲染,造成了CPU(CentralProcessingUnit,中央處理器)、內存等資源不必要的消耗。
技術實現思路
本申請旨在至少在一定程度上解決上述技術問題。為此,本申請的第一個目的在于提出一種渲染方法,從而能夠顯示結果更加流暢自然、避免資源浪費。本申請的第二個目的在于提出一種渲染裝置。本申請的第三個目的在于提出一種渲染系統。為達上述目的,根據本申請第一方面實施例提出了一種渲染方法,包括以下步驟:建立虛擬上下文對象,并建立所述虛擬上下文對象的屬性;監控所述虛擬上下文對象的屬性是否被修改;以及如果監控到虛擬上下文對象的屬性被修改,則根據修改的屬性生成心跳包,并向渲染引擎發送所述心跳包以激活所述渲染引擎,其中,所述渲染引擎在被激活之后根據修改的屬性進行渲染。本申請實施例的渲染方法,通過建立虛擬上下文對象及其屬性,并在監控到虛擬上下文對象的屬性被修改時根據修改的屬性生成心跳包,并發送至渲染引擎,以激活渲染引擎并根據修改的屬性進行渲染,通過虛擬上下文對象感知屬性的變化,并在屬性被修改時,主動地通知渲染引擎進行渲染,從而不但能夠及時得到修改后的屬性對應的結果,使顯示結果更加流暢自然,并且在屬性未修改時,不進行渲染,避免了CPU、內存等資源的浪費。本申請第二方面實施例提供了一種渲染裝置,包括:建立模塊,用于建立虛擬上下文對象,并建立所述虛擬上下文對象的屬性;監控模塊,用于監控所述虛擬上下文對象的屬性是否被修改;以及激活模塊,用于如果監控到虛擬上下文對象的屬性被修改,則根據修改的屬性生成心跳包,并向渲染引擎發送所述心跳包以激活所述渲染引擎,其中,所述渲染引擎在被激活之后根據修改的屬性進行渲染。本申請實施例的渲染裝置,通過建立虛擬上下文對象及其屬性,并在監控到虛擬上下文對象的屬性被修改時根據修改的屬性生成心跳包,并發送至渲染引擎,以激活渲染引擎并根據修改的屬性進行渲染,通過虛擬上下文對象感知屬性的變化,并在屬性被修改時,主動地通知渲染引擎進行渲染,從而不但能夠及時得到修改后的屬性對應的結果,使顯示結果更加流暢自然,并且在屬性未修改時,不進行渲染,避免了CPU、內存等資源的浪費。本申請第三方面實施例提供了一種渲染系統,包括:本申請第二方面實施例的渲染裝置;以及渲染引擎。本申請實施例的渲染系統,通過建立虛擬上下文對象及其屬性,并在監控到虛擬上下文對象的屬性被修改時根據修改的屬性生成心跳包,并發送至渲染引擎,以激活渲染引擎并根據修改的屬性進行渲染,通過虛擬上下文對象感知屬性的變化,并在屬性被修改時,主動地通知渲染引擎進行渲染,從而不但能夠及時得到修改后的屬性對應的結果,使顯示結果更加流暢自然,并且在屬性未修改時,不進行渲染,避免了CPU、內存等資源的浪費。本申請的附加方面和優點將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本申請的實踐了解到。附圖說明本申請的上述和/或附加的方面和優點從結合下面附圖對實施例的描述中將變得明顯和容易理解,其中:圖1為根據本申請一個實施例的渲染方法的流程圖;圖2為根據本申請另一個實施例的渲染方法的流程圖;圖3為根據本申請一個實施例的渲染裝置的結構示意圖;圖4為根據本申請一個實施例的渲染系統的結構示意圖。具體實施方式下面詳細描述本申請的實施例,所述實施例的示例在附圖中示出,其中自始至終相同或類似的標號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實施例是示例性的,僅用于解釋本申請,而不能理解為對本申請的限制。下面參考附圖描述根據本申請實施例的渲染方法和裝置。圖1為根據本申請一個實施例的渲染方法的流程圖。如圖1所示,根據本申請實施例的渲染方法,包括:S101,建立虛擬上下文對象,并建立虛擬上下文對象的屬性。具體地,在本申請的一個實施例中,在建立虛擬上下文對象(context對象)之后,可將渲染引擎的上下文2D的屬性均拷貝至虛擬上下文對象中,作為虛擬上下文對象的屬性。其中,上下文2D即canvax.context2D,其屬性包括渲染引擎中預存的基礎圖形庫中的圖形元素的大小、位置等屬性。上述canvas.context2D中的屬性為基礎圖形庫中預存的圖形元素的大小、位置等基本屬性,在本申請的一個實施例中,進一步地,還可在虛擬上下文對象中添加擴展屬性,即建立虛擬上下文對象的屬性時還可將將擴展屬性拷貝至虛擬上下文對象以完善虛擬上下文對象的屬性。其中,擴展屬性可為自定義圖形元素或者基礎圖形庫中不包含的特殊圖像元素的屬性。舉例來說,對于自定義的圓形,其擁有半徑r,則可將半徑r作為一個擴展屬性也添加至虛擬上下問對象的屬性中。S102,監控虛擬上下文對象的屬性是否被修改。在本申請的一個實施例中,可通過IE瀏覽器的DefineProperty構造函數或Vbscript模擬的方式監控虛擬上下文對象的屬性是否被修改。具體地,可通過兼容IE瀏覽器的DefineProperty構造函數或Vbscript模擬將虛擬上下文對象構造為擁有get(獲取)和set(設置)能力的節點。其中,get節點用于獲取虛擬上下文對象,即讀取虛擬上下文對象,set節點用于設置虛擬上下文對象,例如修改上下文對象的屬性等。其中,set節點擁有watch方法,watch方法可監控虛擬上下文對象的屬性是否被修改。從而虛擬上下文對象具有感知屬性變化的能力。其中,watch方法在虛擬上下文對象的屬性被修改(即虛擬上下文對象的屬性被賦值)時啟動,并在啟動后可獲取修改的屬性的標識信息、修改內容以及所屬的節點等信息。S103,如果監控到虛擬上下文對象的屬性被修改,則根據修改的屬性生成心跳包,并向渲染引擎發送所述心跳包以激活渲染引擎,其中,渲染引擎在被激活之后根據修改的屬性進行渲染。在本申請的一個實施例中,如果監控到虛擬上下文對象的屬性被修改,則可由watch方法獲取修改的屬性的標識信息、修改內容以及所屬的節點等信息生成心跳包,并向渲染引擎發送該心跳包,以激活渲染引擎。渲染引擎在被激活后,可根據心跳包中的修改的屬性的標識信息、修改內容以及所屬的節點等信息對該屬性進行渲染。具體地,渲染引擎在被激活之后根據修改的屬性進行渲染具體包括:渲染引擎在被激活之后,等待預設時間,并在等待預設時間之后的下一幀根據修改的屬性進行渲染。其中,預設時間為能夠保證顯示結果的流暢性的最優時間,是由瀏覽器的渲染引擎自身屬性決定的。渲染引擎在等待時間內可繼續接收心跳包,并記錄接收到的心跳包中的修改的屬性的信息,并在等待預設時間之后的下一幀根據修改的屬性進行渲染,從而,通過等待預設時間,可在瀏覽器進行下一幀渲染時對修改的屬性進行統一渲染,使得修改屬性的渲染與瀏覽器界面更新頻率一致,顯示結果本文檔來自技高網...

【技術保護點】
一種渲染方法,其特征在于,包括以下步驟:建立虛擬上下文對象,并建立所述虛擬上下文對象的屬性;監控所述虛擬上下文對象的屬性是否被修改;以及如果監控到虛擬上下文對象的屬性被修改,則根據修改的屬性生成心跳包,并向渲染引擎發送所述心跳包以激活所述渲染引擎,其中,所述渲染引擎在被激活之后根據修改的屬性進行渲染。
【技術特征摘要】
1.一種渲染方法,其特征在于,包括以下步驟:建立虛擬上下文對象,并建立所述虛擬上下文對象的屬性;監控所述虛擬上下文對象的屬性是否被修改;以及如果監控到虛擬上下文對象的屬性被修改,則根據修改的屬性生成心跳包,并向渲染引擎發送所述心跳包以激活所述渲染引擎,其中,所述渲染引擎在被激活之后根據修改的屬性進行渲染。2.如權利要求1所述的渲染方法,其特征在于,所述建立所述虛擬上下文對象的屬性具體包括:將所述渲染引擎的上下文2D的屬性均拷貝至所述虛擬上下文對象。3.如權利要求2所述的渲染方法,其特征在于,所述建立所述虛擬上下文對象的屬性,還具體包括:將擴展屬性拷貝至所述虛擬上下文對象以完善所述虛擬上下文對象的屬性。4.如權利要求1所述的渲染方法,其特征在于,通過IE瀏覽器的DefineProperty構造函數或Vbscript模擬的方式監控所述虛擬上下文對象的屬性是否被修改。5.如權利要求1所述的渲染方法,其特征在于,所述渲染引擎在被激活之后根據修改的屬性進行渲染具體包括:所述渲染引擎在被激活之后,等待預設時間,并在等待預設時間之后的下一幀根據修改的屬性進行渲染。6.如權利要求1所述的渲染方法,其特征在于,在所述渲染引擎被激活之后,還包括:所述渲染引擎判斷當前的心跳設置是否為靜默狀態;如果所述心跳設置為靜默狀態,則將所述心跳設置切換為啟動狀態。7.如權利要求1所述的渲染方法,其特征在于,在所述渲染引擎在被激活之后根據修改的屬性進行渲染之后,還包括:所述渲染引擎將心跳設置切換為靜默狀態。8.一種渲染裝置,其特征在...
【專利技術屬性】
技術研發人員:李濤,
申請(專利權)人:阿里巴巴集團控股有限公司,
類型:發明
國別省市:開曼群島;KY
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。