Альфа-канал со сжатой текстурой DXT5 - PullRequest
0 голосов
/ 30 января 2012

Я написал тестовую программу с использованием OpenGL на OS X, которая загружает PNG, сжимает его в памяти до DXT5 с помощью libsquish (http://code.google.com/p/libsquish/), и текстурирует плоскость.

Когда я загружаю изображение, которое содержитальфа-канал, но никакие пиксели не имеют альфа-значений, кроме полностью непрозрачных, он отображается правильно: http://i.imgur.com/nElZ8.png

Если изображение совпадает, но черная часть заменена на прозрачность, я получаю вывод: http://i.imgur.com/8Ld3y.png

Код не очень красивый, это собранное доказательство концепции:

  1. Источник C ++: http://pastebin.com/m0RqpgUS
  2. Вершинный шейдер: http://pastebin.com/QyaWCaTk
  3. Фрагмент шейдера: http://pastebin.com/KEuFJ83C
  4. Тестовые изображения: http://dl.dropbox.com/u/4597377/images.zip

Есть мысли?

1 Ответ

0 голосов
/ 31 января 2012

Оказывается, я забыл это:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...