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 纹理压缩?的主要内容,如果未能解决你的问题,请参考以下文章