Я написал тестовую программу с использованием OpenGL на OS X, которая загружает PNG, сжимает его в памяти до DXT5 с помощью libsquish (http://code.google.com/p/libsquish/), и текстурирует плоскость.
Когда я загружаю изображение, которое содержитальфа-канал, но никакие пиксели не имеют альфа-значений, кроме полностью непрозрачных, он отображается правильно: http://i.imgur.com/nElZ8.png
Если изображение совпадает, но черная часть заменена на прозрачность, я получаю вывод: http://i.imgur.com/8Ld3y.png
Код не очень красивый, это собранное доказательство концепции:
Есть мысли?
Оказывается, я забыл это:
glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);