Only textures with width/height being multiple of 4 can be compressed to DXT5 format.

目錄

 

警報描寫:

在網上找了一下資料,整理如下:

吐槽一下:

原文鏈接:


警報描寫:

導入一張紋理,設置成GUI各式後,報個了警告:

    錯誤其實很簡單:“紋理的長寬都是4的倍數,才能被壓縮成DXT5 格式”。看着這個提示,想到了unity的一次大會上,說紋理貼圖推薦大小是256、512、1024等。當然,只要是4的倍數就行。當時就那麼一聽。現在想想,還是查一下吧,爲啥要壓縮成DXT5呢,DXT5是什麼東西?

在網上找了一下資料,整理如下:

核心關鍵詞:壓縮的DXT5格式,使用較少的內存。

    在DirectX中,使用一種叫做DXT的紋理壓縮技術,目前這種技術被大部分顯卡所支持。 DXT是一種DirectDraw表面,它以壓縮形式存儲圖形數據,該表面可以節省大量的系統帶寬和內存。即使不直接使用DXT表面渲染,也可以通過 DXT格式創建紋理的方法節省磁盤空間。

DXT4、DXT5 
    DXT4、DXT5也是用於表示具有複雜的透明信息的貼圖,與2和3不同的是4和5的Alpha信息是通過線性插值計算所得,類似於DXT1的顏色信息。同樣的,每4×4的像素塊的透明信息佔用64位,所不同的是,64位中採用了2個8位的alpha值和16個3位的索引值,既然每個像素的索引佔3位,那麼可以表示8種不同的透明狀態。 
    在這裏插值的方法有兩種,一種用於表示具有完全透明和完全不透明的狀態,另一種則是僅在給出的極端值alpha_0和alpha_1中進行插值。區分的方法也是通過比較alpha_0和alpha_1的大小來實現的,如果alpha_0大於alpha_1,則通過插值計算剩下的6箇中間alpha值;否則,只通過插值計算4箇中間alpha值,alpha_6直接賦值0,alpha_7直接賦值255。 
    DXT4和DXT5的區別同DXT2和DXT3的區別相同,DXT4的顏色值是理解爲已經完成Premultiplied by alpha操作的。 
    另外需要注意的是,所有的壓縮紋理格式都是2的冪,因爲紋理壓縮的單位是4×4像素,所以如果貼圖的大小位16×2或者8×1這樣的比例,系統會同樣採用4×4的單位進行壓縮,會造成一定的空間浪費,同樣的大小會被佔用,只是不會參與使用而已。

吐槽一下:

    unity4以下的原生GUI,效率比較低下,而且各種難用。再加上運行才能看效果,開發效率也較低。但是,如果用NGUI等插件,又不太合適,因爲unity正在開發一套新的UI系統。學了NGUI,有點走彎路的感覺。真是青黃不接的時代啊。據說,kabam對於UI技術的選用,也是同樣處於這種尷尬的狀態,也在等unity新版的UI系統。

原文鏈接:

https://blog.csdn.net/chenggong2dm/article/details/25186953

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章