GB8888格式的數(shù)據(jù),并將轉(zhuǎn)換后的兩個數(shù)據(jù)進(jìn)行alpha融合,再將融合后的顏色數(shù)據(jù)壓縮回DXT5格式的數(shù)據(jù),輸出到目標(biāo)貼圖中的對應(yīng)位置。
[0094]在本實(shí)施例中,根據(jù)融合公式Colortarget= aSrc*ColorSrc+( l-aSrc)*Colordst可知,如果像素塊中每個像素點(diǎn)的alpha值均為O,最終的融合結(jié)果為目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)保持不變。如果像素塊中每個像素點(diǎn)的alpha值均為I,最終的融合結(jié)果為目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)均被該像素塊中的顏色數(shù)據(jù)所替換。如果像素塊中每個像素點(diǎn)的alpha值不全為I或不全為0,才需要將每個像素點(diǎn)代入融合公式進(jìn)行計算,得到最終的融合效果。在裝備貼圖中,大部分的DXT5格式數(shù)據(jù)的像素塊都是鏤空(alpha值全為O)或?qū)嵭?alpha值全為I),故本發(fā)明在進(jìn)行貼圖處理時,以16個像素點(diǎn)即一個像素塊為單位進(jìn)行處理,最大限度地降低了貼圖文件在DXT5格式和ARGB8888格式之間的兩次轉(zhuǎn)換所帶來的消耗,而且與現(xiàn)有技術(shù)逐個像素點(diǎn)進(jìn)行處理的方法相比,本發(fā)明具有更高的處理效率。
[0095]步驟103:當(dāng)源貼圖文件中的每一個像素塊均被讀取且處理完畢后,獲得alpha融合后的目標(biāo)貼圖。
[0096]由上可見,本發(fā)明實(shí)施例提供的一種基于alpha融合的貼圖處理方法,在與目標(biāo)貼圖進(jìn)行alpha融合時,通過對源貼圖文件中的每個像素塊中每個像素點(diǎn)的alpha值進(jìn)行判斷,當(dāng)所有像素點(diǎn)的alpha值均為O時,使目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)保持不變;當(dāng)所有像素點(diǎn)的alpha值均為I時,將該像素塊的DXT5格式數(shù)據(jù)中的顏色數(shù)據(jù)拷貝至目標(biāo)貼圖中的對應(yīng)位置;當(dāng)所有像素點(diǎn)的alpha值不全為O或不全為I時,將該像素塊和目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)提取出來,分別轉(zhuǎn)換為ARGB8888格式的數(shù)據(jù)進(jìn)行alpha融合,再將融合后的顏色數(shù)據(jù)壓縮回DXT5格式的數(shù)據(jù),輸出到目標(biāo)貼圖的對應(yīng)位置;當(dāng)源貼圖文件中的每一個像素塊均被處理完畢后,獲得alpha融合后的目標(biāo)貼圖。相比于現(xiàn)有技術(shù)將源貼圖文件和目標(biāo)貼圖中的所有像素塊由DXT5格式轉(zhuǎn)換為ARGB8888格式后,再進(jìn)行alpha融合,融合時以每一個像素點(diǎn)作為單位,本發(fā)明技術(shù)方案以整個像素塊為處理單位,節(jié)省了數(shù)據(jù)轉(zhuǎn)換的次數(shù),減少了 DXT5格式像素塊的解壓消耗,提高了 alpha融合的效率。
[0097]實(shí)施例2
[0098]參見圖11,圖11為本發(fā)明提供的貼圖處理方法的另一種實(shí)施例的流程示意圖。其主要包括步驟201至步驟203,具體如下:
[0099]步驟201:獲取用于與目標(biāo)貼圖進(jìn)行alpha融合的中間貼圖文件;其中,中間貼圖文件記載了源貼圖中的每一個像素塊的位置信息、屬性和顏色數(shù)據(jù)。
[0100]步驟202:根據(jù)中間貼圖文件中的每一個像素塊的位置信息,依次讀取所述每一個像素塊的屬性和顏色數(shù)據(jù),對目標(biāo)貼圖中的對應(yīng)位置進(jìn)行貼圖處理。
[0101]在本實(shí)施例中,步驟202包括:
[0102]當(dāng)所讀取的像素塊的屬性為鏤空像素塊時,使目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)保持不變;其中,鏤空像素塊的顏色數(shù)據(jù)為空。
[0103]當(dāng)所讀取的像素塊的屬性為實(shí)心像素塊時,將像素塊的顏色數(shù)據(jù)拷貝至目標(biāo)貼圖中的對應(yīng)位置;其中,實(shí)心像素塊的顏色數(shù)據(jù)為DXT5格式的數(shù)據(jù)。
[0104]當(dāng)所讀取的像素塊的屬性為待融合像素塊時,將目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)轉(zhuǎn)換為ARGB8888格式的數(shù)據(jù),并與待融合像素塊的顏色數(shù)據(jù)進(jìn)行alpha融合,將融合后的顏色數(shù)據(jù)壓縮回DXT5格式的數(shù)據(jù),再輸出到目標(biāo)貼圖中的對應(yīng)位置;其中,待融合像素塊的顏色數(shù)據(jù)為ARGB8888格式的數(shù)據(jù)。
[0105]步驟203:當(dāng)中間貼圖文件中的每一個像素塊均被讀取且處理完畢后,獲得alpha融合后的目標(biāo)貼圖。
[0106]本實(shí)施例與實(shí)施例1的區(qū)別在于,本實(shí)施例將源貼圖文件轉(zhuǎn)換為中間貼圖文件(簡稱為PTF,Processed Texture File),該轉(zhuǎn)換步驟在游戲離線預(yù)處理完成。離線預(yù)處理是在游戲發(fā)布前對資源的一個預(yù)處理階段,目的在于對將要發(fā)布的資源進(jìn)行一定的處理,以便更好地被游戲使用,因?yàn)椴簧婕暗接螒虻膶?shí)時運(yùn)行成本,所以本階段對資源的處理并無硬性要求。本實(shí)施例對中間貼圖文件與目標(biāo)貼圖進(jìn)行alpha融合,同樣提高了alpha融合的處理效率。
[0107]作為本實(shí)施例的一種舉例,參見圖12,圖12是本發(fā)明提供的基于alpha融合的貼圖處理方法的又一種實(shí)施例的流程示意圖。在步驟201之前,還包括步驟301至303,其主要步驟流程如下:
[0108]步驟301:獲取用于與目標(biāo)貼圖進(jìn)行alpha融合的源貼圖文件;其中,源貼圖文件包含源貼圖中的每一個像素塊的DXT5格式數(shù)據(jù)和位置信息;DXT5格式數(shù)據(jù)包含像素塊的每一個像素點(diǎn)的顏色數(shù)據(jù)和alpha值。
[0109]步驟302:創(chuàng)建一個中間貼圖文件,根據(jù)源貼圖文件中每一個像素塊的位置信息,依次讀取每一個像素塊的DXT5格式數(shù)據(jù)進(jìn)行轉(zhuǎn)換,并寫入到中間貼圖文件中。
[0110]在本舉例中,步驟302具體為:
[0111]當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值均為O時,將DXT5格式數(shù)據(jù)所對應(yīng)的像素塊的屬性確定為鏤空像素塊,并將鏤空像素塊的顏色數(shù)據(jù)配置為空,再將鏤空像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到中間貼圖文件。
[0112]當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值均為I時,將DXT5格式數(shù)據(jù)所對應(yīng)的像素塊的屬性確定為實(shí)心像素塊,并將DXT5格式數(shù)據(jù)中的顏色數(shù)據(jù)提取出來,直接作為實(shí)心像素塊的顏色數(shù)據(jù),再將實(shí)心像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到中間貼圖文件。
[0113]當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值不全為O或不全為I時,將DXT5格式數(shù)據(jù)所對應(yīng)的像素塊的屬性確定為待融合像素塊,并將DXT5格式數(shù)據(jù)中的顏色數(shù)據(jù)提取出來,轉(zhuǎn)換為ARGB8888格式的數(shù)據(jù)后,再作為待融合像素塊的顏色數(shù)據(jù),最后將待融合像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到中間貼圖文件。
[0114]步驟303:對源貼圖文件的每一個像素塊進(jìn)行轉(zhuǎn)換后,獲得記載了源貼圖中的每一個像素塊的位置信息、屬性和顏色數(shù)據(jù)的中間貼圖文件。
[0115]作為本實(shí)施例的一種舉例,本發(fā)明提供了另一種實(shí)現(xiàn)方式,本實(shí)現(xiàn)方式與圖12的區(qū)別在于,步驟302包括:
[0116]當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值均為O時,將DXT5格式數(shù)據(jù)所對應(yīng)的第i個像素塊的屬性確定為鏤空像素塊,并記錄第i個像素塊的位置信息;若下一個讀取的DXT5格式數(shù)據(jù)所對應(yīng)的像素塊不為鏤空像素塊,則將第i個像素塊的顏色數(shù)據(jù)配置為空,再將第i個像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到中間貼圖文件;若后續(xù)讀取的N個連續(xù)的DXT5格式數(shù)據(jù)所對應(yīng)的像素塊均被確定為鏤空像素塊,則將第i個像素塊及后續(xù)的N個連續(xù)像素塊的顏色數(shù)據(jù)配置為空,再將第i個像素塊的位置信息、后續(xù)連續(xù)鏤空像素塊的個數(shù)N、屬性及顏色數(shù)據(jù)寫入到中間貼圖文件。
[0117]當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值均為I時,將DXT5格式數(shù)據(jù)所對應(yīng)的像素塊的屬性確定為實(shí)心像素塊,并將DXT5格式數(shù)據(jù)中的顏色數(shù)據(jù)提取出來,直接作為實(shí)心像素塊的顏色數(shù)據(jù),再將實(shí)心像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到中間貼圖文件。
[0118]當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值不全為O或不全為I時,將DXT5格式數(shù)據(jù)所對應(yīng)的像素塊的屬性確定為待融合像素塊,并將DXT5格式數(shù)據(jù)中的顏色數(shù)據(jù)提取出來,轉(zhuǎn)換為ARGB8888格式數(shù)據(jù)后,再作為待融合像素塊的顏色數(shù)據(jù),最后將待融合像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到所述中間貼圖文件。
[0119]在本舉例中,中間貼圖文件是根據(jù)源貼圖文件進(jìn)行轉(zhuǎn)換的,轉(zhuǎn)換時先獲取相應(yīng)的源貼圖文件,在創(chuàng)建一個空的中間貼圖文件。該中間貼圖文件除了包含上述步驟所貌似的信息外,還記載了其自身的標(biāo)志位、源貼圖文件的寬和高(以所有像素點(diǎn)為單位)以及整個文件的長度。因?yàn)橹虚g貼圖文件的內(nèi)容會根據(jù)源貼圖文件的不同而不同,而且由于DXT5格式與ARGB8888分別所對應(yīng)的字節(jié)并不相同,中間貼圖文件的實(shí)際長度會受到源貼圖文件中鏤空像素塊、實(shí)心像素塊和待融合像素塊的個數(shù)所影響,因此只能在所有像素塊均被轉(zhuǎn)換后才能獲知中間貼圖文件的實(shí)際長度。所以在轉(zhuǎn)換時,這個字段會先輸出一個占位符,在整個文件轉(zhuǎn)換完成后,再將實(shí)際長度輸出到該占位符所在的位置。
[0120]在本舉例中,中間貼圖文件對于鏤空像素塊采用了壓縮存儲的方法,在讀取到第i個像素塊為鏤空像素塊時,記錄第i個像素塊的位置信息。若下一個讀取的像素塊不為鏤空像素塊,則將第一個像素塊的顏色數(shù)據(jù)配置為空,再將第i個像素塊的位置信息、屬性和顏色數(shù)據(jù)寫入到中間貼圖文件中。若后續(xù)讀取的N個連續(xù)的像素塊均為鏤空像素塊,則將第i個像素塊和N個連續(xù)像素塊的顏色數(shù)據(jù)配置為空,再將第i個像素塊的位置信息、連續(xù)個數(shù)N、屬性及顏色數(shù)據(jù)寫入中間貼圖文件中。在貼圖處理時,根據(jù)第i個像素塊的位置信息和連續(xù)個數(shù)N,確定鏤空像素塊的個數(shù),使該部分的鏤空像素塊在目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)保持不變,不僅壓縮了中間貼圖文件的大小,還進(jìn)一步提高貼圖處理的效率。
[0121]在本舉例中,中間貼圖文件中記載的像素塊的位置信息可以但不限于,為像素塊相對于源貼圖中的第一個像素塊的索引偏移。
[0122]由上可見,本發(fā)明實(shí)施例提供了一種基于alpha融合的貼圖處理方法,該方法將源貼圖文件預(yù)先轉(zhuǎn)換為中間貼圖文件,該轉(zhuǎn)換過程可以在離線預(yù)處理完成,將數(shù)據(jù)轉(zhuǎn)換的開銷轉(zhuǎn)移至離線的預(yù)處理階段,降低了本地設(shè)備的硬件需求,提高了 alpha融合的效率。
[0123]進(jìn)一步的,本發(fā)明中的中間貼圖文件對源貼圖文件進(jìn)行壓縮,減少了所占用的磁盤空間,相比于加載源貼圖文件,本發(fā)明的中間貼圖文件具有更快的加載速度,進(jìn)一步提高alpha融合的效率。
[0124]實(shí)施例3
[0125]參見圖13,圖13是本發(fā)明提供的貼圖處理裝置的一種實(shí)施例的結(jié)構(gòu)示意圖。如圖13所示,該裝置主要包括:
[0126]第一獲取單元401,用于獲取用于與目標(biāo)貼圖進(jìn)行alpha融合的源貼圖文件;其中,源貼圖文件包含源貼圖中的每一個像素塊的DXT5格式數(shù)據(jù)和位置信息;DXT5格式數(shù)據(jù)包含像素塊的每一個像素點(diǎn)的顏色數(shù)據(jù)和a Ipha值。
[0127]第一貼圖處理單元402,用于根據(jù)每一個像素塊的位置信息,依次讀取每一個像素塊的DXT5格式數(shù)據(jù),對目標(biāo)貼圖中的對應(yīng)位置進(jìn)行貼圖處理。
[0128]和,第一輸出單元403,用于當(dāng)源貼圖文件中的每一個像素塊均被讀取且處理完畢后,輸出alpha融合后的目標(biāo)貼圖。
[0129]其中,第一貼圖處理單元402包括:第一處理子單元4021、第二處理子單元4022和第三處理子單元4023。
[0130]第一處理子單元4021,用于當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值均為O時,使目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù)保持不變。
[0131]第二處理子單元4022,用于當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值均為I時,將DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的顏色數(shù)據(jù)拷貝至目標(biāo)貼圖中的對應(yīng)位置。
[0132]第三處理子單元4023,用于當(dāng)所讀取的DXT5格式數(shù)據(jù)中的每一個像素點(diǎn)的alpha值不全為O或不全為I時,將DXT5格式數(shù)據(jù)和目標(biāo)貼圖中的對應(yīng)位置的顏色數(shù)據(jù),分別轉(zhuǎn)換為ARGB8888格式的數(shù)據(jù),并將轉(zhuǎn)