專利名稱:一種圖像渲染方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于圖像處理領(lǐng)域,尤其涉及一種圖像渲染方法及系統(tǒng)。
技術(shù)背景下面以2D游戲渲染過程為例來說明現(xiàn)有技術(shù)的圖像渲染方法?,F(xiàn)有技術(shù)的 圖像渲染方法包括以下步驟A、 將所有元素(即物件)加載到物件管理器,此時(shí)的物件是無序的;B、 將所有物件按在圖像(即場景)中的深度由深至淺的順序進(jìn)行排序;C、 根據(jù)上述順序?qū)⑽锛樞蚪唤o顯示適配器進(jìn)行渲染。然而,在實(shí)現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題 由于現(xiàn)有技術(shù)必須嚴(yán)格按照預(yù)先排好的順序進(jìn)行渲染,只能逐個(gè)將元素提交給 顯示適配器進(jìn)行渲染,因此渲染提交次數(shù)很多,渲染的過程要花費(fèi)很長的時(shí)間; 另外,由于可能每個(gè)前后進(jìn)行渲染的元素的渲染狀態(tài)都不同,因此渲染時(shí)要頻 繁地切換顯示適配器的渲染狀態(tài),故渲染狀態(tài)切換次數(shù)很多,非常耗時(shí)。發(fā)明內(nèi)容本發(fā)明實(shí)施例所要解決的技術(shù)問題在于提供一種能減少渲染提交次數(shù)和渲 染狀態(tài)切換次數(shù)的圖像渲染方法及系統(tǒng)。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種圖像渲染方法,其包括以下 步驟在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù); 對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組; 逐一將每組渲染狀態(tài)相同的元素提交進(jìn)行渲染。為解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種圖像渲染方法,其包括以下步驟將圖像中的透明元素和不透明元素分開;在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù); 把不透明元素按照渲染狀態(tài)進(jìn)行分組,逐一將每組渲染狀態(tài)相同的元素提交進(jìn)行渲染;把透明元素按照元素在圖像中的深度由深至淺順序依次渲染。 為解決上述技術(shù)問題,本發(fā)明實(shí)施例還提供一種圖像渲染系統(tǒng),其包括 深度參數(shù)標(biāo)注模塊,用于在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);元素分組才莫塊,用于對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交; 渲染模塊,用于對圖像中的所有元素進(jìn)行渲染。為解決上述技術(shù)問題,本發(fā)明實(shí)施例還提供一種圖像渲染系統(tǒng),其包括 深度參數(shù)標(biāo)注模塊,用于在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);分離模塊,用于將圖像中的透明元素和不透明元素分開; 元素分組模塊,用于對所述不透明元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交,將所述透明元素按照元素在圖像中的深度由深至淺的順序提交; 渲染模塊,用于對圖像中的所有元素進(jìn)行渲染。上述技術(shù)方案中的一個(gè)或多個(gè)技術(shù)方案具有如下有益效果由于本發(fā)明實(shí) 施例按照渲染狀態(tài)對元素進(jìn)行分組,然后逐一將每組渲染狀態(tài)相同的元素提交 進(jìn)行渲染,因此本發(fā)明實(shí)施例能減少渲染提交次數(shù)和渲染狀態(tài)切換的次數(shù),從 而減少整個(gè)渲染過程的時(shí)間消耗,提高圖像渲染的效率。
圖l是本發(fā)明第一實(shí)施例提供的圖像渲染方法的流程圖; 圖2是本發(fā)明第二實(shí)施例提供的圖像渲染方法的流程圖; 圖3是本發(fā)明第 一 實(shí)施例提供的圖像渲染系統(tǒng)的功能模塊框圖; 圖4是本發(fā)明第二實(shí)施例提供的圖像渲染系統(tǒng)的功能模塊框圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí) 施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅 僅用以解釋本發(fā)明,并不用于限定本發(fā)明。請參閱圖1,本發(fā)明第 一實(shí)施例提供的圖像渲染方法包括以下步驟Al、在圖像中的每個(gè)元素上標(biāo)注一個(gè)表示該元素在圖像中的深度的深度參數(shù)Z;A2、對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組,所謂渲染狀態(tài)分組是指把所有渲染狀態(tài)(如元素的紋理數(shù)目、紋理混合狀態(tài)、ALPHA混合狀態(tài)等)相同的元素分為一組;A3、逐一將每組渲染狀態(tài)相同的元素提交給顯示適配器進(jìn)行渲染,對渲染 狀態(tài)相同的元素同時(shí)進(jìn)行渲染時(shí),如果圖像中的多個(gè)元素在同一個(gè)像素生成渲 染結(jié)果,則顯示適配器比較該多個(gè)元素的Z值,將Z值較大的元素的渲染結(jié)果剔 除,保留Z值較小的元素渲染結(jié)果,當(dāng)然若設(shè)置為Z值越小表示元素在圖像中的 深度越深,則將Z值較小的元素的渲染結(jié)果剔除,保留Z值較大的元素渲染結(jié)果。當(dāng)然本發(fā)明第一實(shí)施例提供的圖像渲染方法中的步驟A2也可在步驟A1之 前執(zhí)行。請參閱圖2,本發(fā)明第二實(shí)施例提供的圖像渲染方法是針對帶有透明元素的 圖像進(jìn)行渲染的方法,其中,透明元素是指包含透明像素的元素,通常也包含 不透明像素,該方法包括以下步驟Bl、將圖像中的透明元素和不透明元素分開;并將透明元素中的透明部分
和不透明部分切分成透明元素和不透明元素,從而可減少象素填充消耗;其中, 透明部分是指包含透明像素的部分,也有可能包含一些不透明像素,不透明部 分是指只包含不透明像素的部分;B2、在圖像中的每個(gè)元素上標(biāo)注一個(gè)表示該元素在圖像中的深度的深度參數(shù)Z;B3、把不透明元素按照渲染狀態(tài)進(jìn)行分組,逐一將每組渲染狀態(tài)相同的元 素提交給顯示適配器進(jìn)行渲染;把透明元素按照元素在圖像中的深度由深至淺 順序依次渲染。當(dāng)然本發(fā)明第二實(shí)施例提供的圖像渲染方法中的步驟B2也可在步驟B 1之 前執(zhí)行。下面以2D游戲渲染過程為例來說明本發(fā)明第三和第四實(shí)施例提供的圖像 渲染方法。本發(fā)明實(shí)施例將元素分為兩類, 一類為貼圖不透明的元素,另一類 為貼圖帶有透明的元素。本發(fā)明第三實(shí)施例提供的圖像渲染方法是適用于貼圖不透明的元素和貼圖 帶有透明的元素進(jìn)^f亍渲染的方法,包括以下步驟:Cl、在游戲場景中的每個(gè)元素上標(biāo)注一個(gè)表示該元素在場景中的深度的深 度參數(shù)Z,假設(shè)在場景中最深的Z值為l.O,最淺的Z值為O.O,場景中共有5個(gè)元 素,分別為A、 B、 C、 D、 E,其在場景中的深度順序是A〉B〉OD〉E,意思是A 離我們最遠(yuǎn),會被B、 C、 D和E遮住,本發(fā)明實(shí)施例在該五個(gè)元素上標(biāo)注參數(shù)Z, ZA=5/5、 ZB=4/5、 ZC=3/5、 ZD=2/5、 ZE=l/5;C2、對該五個(gè)元素按照渲染狀態(tài)進(jìn)行分組,々支設(shè)元素A和B的渲染狀態(tài)中的 元素的紋理數(shù)目相同,則將元素A和B分為一組,^i殳元素C、 D和E的渲染狀態(tài) 中的紋理混合狀態(tài)相同,則將元素C、 D和E分為一組;C3、先將元素A和B或先將元素C、 D和E—起提交給顯示適配器進(jìn)行渲染, 這樣對于顯示適配器實(shí)際渲染元素時(shí),就不是"I安照ABCDE的順序,假設(shè)元素C、 D和E在同一個(gè)像素生成渲染結(jié)果,則顯示適配器比較元素C、 D和E的Z值,將Z值較大的元素C的渲染結(jié)果剔除,保留Z值較小的元素E渲染結(jié)果。當(dāng)然本發(fā)明第三實(shí)施例提供的圖像渲染方法中的步驟C2也可在步驟C1之 前執(zhí)行。本發(fā)明第四實(shí)施例提供的圖像渲染方法是針對帶有透明元素的圖像進(jìn)行渲 染的方法,包括以下步驟Dl、將游戲場景中的透明元素和不透明元素分開;并將透明元素中的透明 部分和不透明部分切分成透明元素和不透明元素,從而可減少象素填充消耗;D2、在游戲場景中的每個(gè)元素上標(biāo)注一個(gè)表示該元素在場景中的深度的深 度參數(shù)Z;D3、把不透明元素按照渲染狀態(tài)進(jìn)行分組,逐一將每組渲染狀態(tài)相同的元 素提交給顯示適配器進(jìn)行渲染;把透明元素按照元素在場景中的深度由深至淺 順序依次渲染。當(dāng)然本發(fā)明第四實(shí)施例提供的圖像渲染方法中的步驟D2也可在步驟D 1之 前執(zhí)行。請參閱圖3,本發(fā)明第一實(shí)施例提供的圖像渲染系統(tǒng)包括 深度參數(shù)標(biāo)注模塊,用于在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);元素分組模塊,用于對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交給顯示適配器; 渲染模塊,用于對圖像中的所有元素進(jìn)行渲染,其包括 深度比較模塊,用于比較在同一個(gè)像素生成渲染結(jié)果的多個(gè)元素的深度參數(shù)值;渲染結(jié)果剔除;^莫塊,用于將所述參數(shù)值表示所述元素在圖像中的深度較深 的元素的渲染結(jié)果剔除。請參閱圖4 ,本發(fā)明第二實(shí)施例提供的圖像渲染系統(tǒng)包括 深度參數(shù)標(biāo)注模塊,用于在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像
中的深度的深度參數(shù);分離模塊,用于將圖像中的透明元素和不透明元素分開;切分模塊,用于將透明元素中的透明部分和不透明部分切分成透明元素和不透明元素;元素分組^i塊,用于對所述不透明元素按照渲染狀態(tài)進(jìn)行分組;元素提交才莫塊,用于逐一將每組渲染狀態(tài)相同的元素提交給顯示適配器, 將所述透明元素按照元素在圖像中的深度由深至淺的順序提交給顯示適配器;渲染模塊,用于對圖像中的所有元素進(jìn)行渲染,其包括 深度比較模塊,用于比較在同一個(gè)像素生成渲染結(jié)果的多個(gè)元素的深度參數(shù)值;渲染結(jié)果剔除才莫塊,用于將所述參數(shù)值表示所述元素在圖像中的深度較深 的元素的渲染結(jié)果剔除。本發(fā)明第三實(shí)施例提供的圖像渲染系統(tǒng)包括深度參數(shù)標(biāo)注模塊,用于在游戲場景中的每個(gè)元素上標(biāo)注表示所述元素在游戲場景中的深度的深度參數(shù);元素分組模塊,用于對游戲場景中的所有元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交給顯示適配器; 渲染模塊,用于對游戲場景中的所有元素進(jìn)行渲染,其包括深度比較模塊,用于比較在同一個(gè)像素生成渲染結(jié)果的多個(gè)元素的深度參數(shù)值; 渲染結(jié)果剔除模塊,用于將所述參數(shù)值表示所述元素在游戲場景中的深度較深的元素的渲染結(jié)果剔除。本發(fā)明第四實(shí)施例提供的圖像渲染系統(tǒng)包括深度參數(shù)標(biāo)注模塊,用于在游戲場景中的每個(gè)元素上標(biāo)注表示所述元素在游戲場景中的深度的深度參數(shù);分離模塊,用于將游戲場景中透明元素和不透明元素分開;切分^^塊,用于將透明元素中的透明部分和不透明部分切分成透明元素和不透明元素;
元素分組模塊,用于對所述不透明元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交給顯示適配器,將所述透明元素按照元素在游戲場景中的深度由深至淺的順序提交給顯示適配器;渲染模塊,用于對游戲場景中的所有元素進(jìn)行渲染,其包括 深度比較模塊,用于比較在同一個(gè)像素生成渲染結(jié)果的多個(gè)元素的深度參 數(shù)值;渲染結(jié)果剔除模塊,用于將所述參數(shù)值表示所述元素在游戲場景中的深度 較深的元素的渲染結(jié)果剔除。利用本發(fā)明實(shí)施例的方法及系統(tǒng)渲染圖像時(shí),假設(shè)圖像中具有1000個(gè)元素, 則首先將該1000個(gè)元素4艮據(jù)渲染狀態(tài)進(jìn)行分類,而渲染狀態(tài)的種類是有限的, 最多也只有10余種,而通常用到的只有幾種,假-沒該1000個(gè)元素分為10種渲染 狀態(tài),則把每個(gè)渲染狀態(tài)相同的元素集中在一起提交給顯卡渲染,則只需提交 渲染10次,而渲染狀態(tài)的切換只有10次。因此本發(fā)明實(shí)施例的方法及系統(tǒng)能減 少渲染提交次數(shù)和渲染狀態(tài)切換的次數(shù),從而減少整個(gè)渲染過程的時(shí)間消耗, 提高圖像渲染的效率??梢酝ㄟ^程序來指令相關(guān)的硬件來完成,所述的程序可以存儲于一計(jì)算機(jī)可讀 取存儲介質(zhì)中,該程序在執(zhí)行時(shí),包括如下步驟(方法的步驟),所述的存儲 介質(zhì),如ROM/RAM、磁碟、光盤等。以上所述〗又為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā) 明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明 的保護(hù)范圍之內(nèi)。 -
權(quán)利要求
1、一種圖像渲染方法,其特征在于,包括以下步驟在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組;逐一將每組渲染狀態(tài)相同的元素提交進(jìn)行渲染。
2、 如權(quán)利要求l所述的圖像渲染方法,其特征在于,在所述對渲染狀態(tài)相 同的元素進(jìn)行渲染的步驟中還包括以下步驟如果圖像中的多個(gè)元素在同一個(gè)像素生成渲染結(jié)果,則顯示適配器比較所 述多個(gè)元素的深度參數(shù)值,將所述參數(shù)值表示所述元素在圖像中的深度較深的 元素的渲染結(jié)果剔除,保留所述參數(shù)值表示所述元素在圖像中的深度較淺的元 素渲染結(jié)果。
3、 一種圖像渲染方法,其特征在于,包括以下步驟 將圖像中的透明元素和不透明元素分開;在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù); 把不透明元素按照渲染狀態(tài)進(jìn)行分組,逐一將每組渲染狀態(tài)相同的元素提 交進(jìn)行渲染;把透明元素按照元素在圖像中的深度由深至淺順序依次渲染。
4、 如權(quán)利要求3所述的圖像渲染方法,其特征在于,在所述對渲染狀態(tài)相 同的元素進(jìn)行渲染的步驟中還包括以下步驟如果圖像中的多個(gè)元素在同一個(gè)像素生成渲染結(jié)果,則顯示適配器比較所 述多個(gè)元素的深度參數(shù)值,將所述參數(shù)值表示所述元素在圖像中的深度較深的 元素的渲染結(jié)果剔除,保留所述參數(shù)值表示所述元素在圖像中的深度較淺的元 素渲染結(jié)果。
5、 如權(quán)利要求3所述的圖像渲染方法,其特征在于,所述方法還包括以下 步驟將透明元素中的透明部分和不透明部分切分成透明元素和不透明元素。
6、 一種圖像渲染系統(tǒng),其特征在于,包括深度參數(shù)標(biāo)注模塊,用于在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);元素分組模塊,用于對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交; 渲染模塊,用于對圖像中的所有元素進(jìn)行渲染。
7、 如權(quán)利要求6所述的圖像渲染系統(tǒng),其特征在于,所述渲染模塊包括 深度比較模塊,用于比較在同一個(gè)像素生成渲染結(jié)果的多個(gè)元素的深度參數(shù)值;渲染結(jié)果剔除模塊,用于將所述參數(shù)值表示所述元素在圖像中的深度較深 的元素的渲染結(jié)果剔除。
8、 一種圖像渲染系統(tǒng),其特征在于,包括深度參數(shù)標(biāo)注模塊,用于在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);分離模塊,用于將圖像中的透明元素和不透明元素分開; 元素分組^i塊,用于對所述不透明元素按照渲染狀態(tài)進(jìn)行分組; 元素提交模塊,用于逐一將每組渲染狀態(tài)相同的元素提交,將所述透明元素按照元素在圖^^中的深度由深至淺的順序提交; 渲染模塊,用于對圖像中的所有元素進(jìn)行渲染。
9、 如權(quán)利要求8所述的圖像渲染系統(tǒng),其特征在于,所述渲染模塊包括 深度比較模塊,用于比較在同一個(gè)像素生成渲染結(jié)果的多個(gè)元素的深度參數(shù)值;渲染結(jié)果剔除;f莫塊,用于將所述參數(shù)值表示所述元素在圖像中的深度較深 的元素的渲染結(jié)果剔除。
10、 如權(quán)利要求8所述的圖像渲染系統(tǒng),其特征在于,所述系統(tǒng)還包括 切分^t塊,用于將透明元素中的透明部分和不透明部分切分成透明元素和不透明元素。
全文摘要
本發(fā)明實(shí)施例公開了一種圖像渲染方法及系統(tǒng),該方法包括以下步驟在圖像中的每個(gè)元素上標(biāo)注表示所述元素在圖像中的深度的深度參數(shù);對圖像中的所有元素按照渲染狀態(tài)進(jìn)行分組;逐一將每組渲染狀態(tài)相同的元素提交進(jìn)行渲染。本發(fā)明實(shí)施例能減少渲染提交次數(shù)和渲染狀態(tài)切換的次數(shù),從而減少整個(gè)渲染過程的時(shí)間消耗,提高圖像渲染的效率。
文檔編號G06T15/10GK101127125SQ20071007727
公開日2008年2月20日 申請日期2007年9月26日 優(yōu)先權(quán)日2007年9月26日
發(fā)明者皓 劉 申請人:騰訊科技(深圳)有限公司