Сжатие текстур DXT?
Я работаю с несколькими изображениями, которые необходимо сжать с использованием формата DXT/S3TC (в частности, DXT5).
Кто-нибудь знает о реализации сжатия DXT (предпочтительно в C# или с использованием.Net Framework), которая обеспечивает сжатие в реальном времени? Мое приложение будет сжимать 10-20 изображений 512x512 за раз, поэтому я хотел бы относительно быстрое внедрение, если оно есть. Я искал и искал, но не могу найти его, и по какой-то причине я не могу обернуть голову вокруг формата DXT5 достаточно, чтобы написать свою собственную реализацию.
Я знаю, что XNA Framework поддерживает сжатие DXT. Кто-нибудь случайно узнает, достаточно ли это быстро? Нужно ли людям устанавливать XNA, чтобы использовать мое приложение?
Спасибо за вашу помощь.:)
3 ответа
Я не знаю о C#, но есть несколько реализаций в текстурных инструментах NVIDIA C++: быстрая и оптимальная (ищите compressDXT5A
). Я полагаю, что реализация там раскладывается на шаг "DXT1" для цветовых каналов и шаг "DXT5A" для альфа-канала.
XNA необходимо будет установить, чтобы использовать платформу XNA, да. Если вы можете гарантировать, что DirectX установлен, вы можете использовать SlimDX для получения подпрограмм DirectX для DXT5.
Это немного поздно (и может звучать как самореклама!), Но я сделал оболочку.NET с открытым исходным кодом для libsquish и выпустил новую версию несколько дней назад. Получите это здесь.
На http://code.google.com/p/libsquish/ есть хорошая реализация C++, которую проще конвертировать в C#/.NET. Вы всегда можете просто скомпилировать его, используя Microsoft Managed-C++.
Сжатие XNA быстрое. Я не знаю пропускную способность, но это всего лишь оболочка для API сжатия изображений DirectX.