DXT 纹理压缩?

Posted

技术标签:

【中文标题】DXT 纹理压缩?【英文标题】:DXT texture compression? 【发布时间】:2012-03-24 06:18:17 【问题描述】:

我正在处理需要使用 DXT/S3TC 格式(特别是 DXT5)压缩的多个图像。

有谁知道提供实时压缩的 DXT 压缩实现(最好使用 C# 或使用 .Net 框架)?我的应用程序将一次压缩 10-20 个 512x512 图像,所以我想要一个相对快速的实现,如果有的话。我搜索了又搜索,但似乎找不到,而且由于某种原因,我无法完全理解 DXT5 格式来编写自己的实现。

我知道 XNA 框架支持 DXT 压缩。有人会碰巧知道它是否相当快吗?人们是否需要安装 XNA 才能使用我的应用程序?

感谢您的帮助。 :)

【问题讨论】:

【参考方案1】:

我不了解 C#,但在 C++ NVIDIA 纹理工具中有一些实现:quick 一个和一个 optimal 一个(搜索 compressDXT5A)。我相信那里的实现被分解为颜色通道的“DXT1”步骤和 Alpha 通道的“DXT5A”步骤。

需要安装 XNA 才能使用 XNA 框架,是的。如果您能保证 DirectX 已安装,您或许可以使用SlimDX 获取 DirectX 的 DXT5 例程。

【讨论】:

【参考方案2】:

这有点晚了(听起来像是在自我推销!)但我为 libsquish 制作了一个开源的 .NET 包装器,并在几天前发布了一个新版本。得到它here。

【讨论】:

如何在你的库中将 png 转换为 dds?【参考方案3】:

http://code.google.com/p/libsquish/ 有很好的 C++ 实现,可能更容易转换为 C#/.NET。您总是可以使用 Microsoft 的 Managed-C++ 编译它。

XNA 的压缩速度很快。我不知道吞吐率,但它只是 DirectX 图像压缩 API 的封装。

【讨论】:

以上是关于DXT 纹理压缩?的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL RGB DXT1压缩纹理mipmap上传

Unity ETC 压缩

在硬件中高效实现 DXT1 纹理解压

UE4 材质纹理必要设置

Python 的 DXT 压缩

如何在 python 中使用 S3TC/DXT 算法压缩 PNG 图像?