Есть ли способ использовать каналы RGB текстуры в качестве альфа-канала при применении мультитекстурирования с использованием OpenGL ES 1.1?

Я уже некоторое время пытаюсь получить сжатие текстур с использованием ETC1 (в частности, файлов PKM). Я пытаюсь сделать это без обновления до OpenGL ES 2, поэтому я использовал мульти-текстурирование.

У меня теперь работает мульти-текстурирование (наконец-то), но проблема в том, что он ведет себя не так, как можно было бы ожидать, и я думаю, что понял, почему. При создании PKM вы получаете PKM только с цветовыми компонентами и один только с альфа-компонентом. Проблема в том, что альфа-ПКМ, кажется, хранит альфа-значение в каналах RGB. Кажется, что черный представляет полную прозрачность, а белый - полную непрозрачность.

Мой вопрос: есть ли способ объединить и преобразовать эти значения RGB в альфа-значение при использовании мульти-текстурирования? Если нет, то я не вижу никаких вариантов использования ETC1 и поддержки альфа-версий в OpenGL ES 1.1 (пожалуйста, поправьте меня, если я ошибаюсь).


person brent777    schedule 25.05.2014    source источник


Ответы (1)


Я также задавал этот вопрос на разных форумах, и все согласны с тем, что это невозможно. Поэтому, если вы хотите реализовать сжатие ETC1, которое обрабатывает альфы, сначала обновите до OpenGL ES 2 и используйте FragmentShaders.

Я решил этого не делать. Что действительно хорошо сработало для меня, так это просто использовать сжатие ETC1 для моих изображений, где альфа-канал не имел значения. Для других моих изображений, где это имело значение, я использовал квантование, чтобы резко уменьшить размер моих PNG. Вы можете сделать это с помощью tinypng.org или установить pngquant локально. Я сделал последнее и написал сценарий bash, который использует сжатие ETC1 для одних изображений и pngquant для других и копирует их в каталог с моими ресурсами - так что все это делается за меня, просто выполняя один сценарий.

person brent777    schedule 14.06.2014
comment
на всякий случай, для сжатия ETC1 я использовал etcpack. - person brent777; 14.06.2014