Я немного запутался после запуска png gauntlet на некоторых текстурных ресурсах png. Раньше все они были либо PNG_COLOR_TYPE_RGB
, либо PNG_COLOR_TYPE_RGBA
, и поэтому сопоставление их с соответствующим цветовым форматом GL было достаточно простым. Полное раскрытие, я не мастер графики.
После запуска png gauntlet для оптимизации текстур вызов png_get_IHDR()
возвращает тип цвета PNG_COLOR_MASK_ALPHA
, и я немного смущен тем, может ли это напрямую отображаться в цветовой формат, который я использую при переходе к glTexImage2D()
.
Конкретное изображение текстуры, которое ведет себя таким образом, представляет собой спрайт, в основном состоящий из белого и серого цветов с различными значениями альфа-канала. Мое лучшее предположение здесь состоит в том, что оптимизация определила, что это какая-то шкала серого с альфой, и поэтому мне нужно обнаружить это в моем коде загрузки текстуры.
Я бы подумал, что, возможно, подходящим типом цвета будет GL_LUMINANCE_ALPHA
, поскольку он использует значение яркости в качестве компонентов R, G и B, что по сути будет шкалой серого с альфа-каналом.
GL_LUMINANCE_ALPHA
будет работать, однако он устарел в OpenGL версии 3 и выше. В таком случае вы, вероятно, можете заменить его наGL_RG
. На какую версию вы ориентируетесь? - person glampert   schedule 19.08.2014