我試圖用原始PNG壓縮DXT壓縮將我的紋理轉換/壓縮爲DDS格式。我在Mac上,所以我使用Graphic Converter(儘管我也嘗試了其他工具)。但無論我使用哪種DXT級別(DXT1-5),文件大小大致保持原始PNG的大小。DXT壓縮產生與原始PNG相同的文件大小
回答
PNG是一種無損壓縮格式,基於帶有一些專用濾波器的zlib。 它將保證重現與原始圖像完全相同的圖像。
因此,PNG壓縮比是變量。 在複雜的圖像上,壓縮效果很差。 在全黑圖像上,壓縮效果非常好。
相比之下,DXT壓縮的固定壓縮比爲。 DXT1的比例爲8:1,DXT5的比例爲4:1(假設爲32位RGBA輸入)。 DXT5的優勢是更好的alpha通道(用於透明度)。如果你不需要它,不要使用它,這只是浪費帶寬。
正如您所能猜到的那樣,的DXT質量將是可變的。 DXT質量僅被認爲是「足夠好」,但並不完美。在圖像的複雜部分,會有一些可見的人造/失真。在簡單的部分,複製品將幾乎精確到原始。
PNG的工作方式是將整個圖像壓縮成作爲單字節流。 DXT壓縮的工作方式是將剪切成4×4像素的小塊,並將它們獨立壓縮爲固定壓縮比。
這使得基本上不同的屬性:DXT紋理應該由GPU硬件直接解碼。這非常快,幾乎免費。這得益於紋理被切割成小塊的事實:不需要解碼整個紋理來推動單個像素=>只需解碼適當的4x4塊。這個屬性是解碼過程的關鍵。
相比之下,PNG解碼整個圖像,因此有更多的空間通過查找4×4鄰域以外的相關性來提高壓縮。但是,這種權衡是不可能僅僅檢索一小塊像素:這就是整個圖像或沒有任何東西。如你所見,選擇其中一種或其他壓縮方法並不是壓縮比的問題。出於存儲目的,選擇PNG,不是因爲它是無損。爲了實時快速顯示大量紋理(3D遊戲的典型場景),DXT是唯一的選擇。
感謝青青,我明白。 DXT有助於運行時內存,其中PNG只有益於文件大小。儘管壓縮WebGL紋理和傳輸時間需要考慮,但這可能會更加棘手。 – Someone
DDS/DXT紋理不保證小於PNG。這取決於紋理的內容和大小。一個純色PNG或大多像純色卡通的PNG會壓縮非常小,因爲照片一般不會很好壓縮。 DXT是4比1還是6比1壓縮週期取決於它是DXT1還是DXT3或DXT5
- 1. DXT壓縮爲Python
- 2. DXT紋理壓縮?
- 3. 縮小PNG大於原來
- 4. ImageIO寫入產生與原始圖像文件相比不同的文件大小
- 5. 壓縮/縮小VIDEO的文件大小
- 6. png文件的壓縮和解壓縮
- 7. 縮小.png文件的大小
- 8. Android - 壓縮和解壓縮圖像的大小相同
- 9. 壓縮/縮小原型文件
- 10. android獲取壓縮文件中的文件的壓縮大小
- 11. 縮小文件大小.png swift
- 12. 爲什麼相同的代碼大小產生不同大小的exe文件
- 13. 在不同機器上壓縮/解壓縮後的不同文件夾大小
- 14. 獲取的未壓縮gzip文件的大小,同時壓縮文件的大小可從服務器
- 15. Django壓縮器無法壓縮生產中的coffeeScript文件
- 16. 壓縮質量比原始文件大100的位圖
- 17. 大領域壓縮文件大小
- 18. Django的壓縮機產生大量的緩存文件
- 19. 縮減大小Extjs4生產
- 20. 放氣後的壓縮文件大小
- 21. 壓縮mp4文件的大小
- 22. tiff lzw壓縮比原始jpeg壓縮大10倍
- 23. iOS/Objective-C:縮小png的縮略圖文件大小
- 24. 如何查找離子壓縮文件的未壓縮大小
- 25. Xcode吹起PNG大小並忽略壓縮PNG = NO標誌?
- 26. 壓縮的PNG
- 27. 哪些文件類型值得爲遠程存儲進行壓縮(壓縮)?對於哪些壓縮大小/原始大小比率是<< 1?
- 28. Django壓縮器+較少壓縮文件,但鏈接到原始文件
- 29. PNG壓縮與PHP magickwand
- 30. GetDIBits()與PNG壓縮失敗
您可以使用gzip爲DXT獲得良好的壓縮比 – mems