GL_ALPHA8 был удален из OpenGL 3.1, каковы альтернативы? - PullRequest
2 голосов
/ 17 ноября 2011

Из того, что я видел, внутренний пиксельный формат GL_ALPHA8 был удален из спецификации ядра OpenGL в OpenGL 3.1. Кажется, что больше нет форматов пикселей с альфа-каналом, но нет каналов RGB. Означает ли это, что единственной альтернативой является создание GL_RGBA8 текстуры и установка компонентов RGB на 255, что приводит к потере 75% ее памяти?

Ответы [ 2 ]

4 голосов
/ 17 ноября 2011

Просто используйте формат GL_R8. Если изменение текстур для корректной работы Swizzle является проблемой, вы можете настроить swizzle mask , чтобы сделать это во время выборки. Например:

GLenum swizzleMask = {GL_ZERO, GL_ZERO, GL_ZERO, GL_RED};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask);
2 голосов
/ 17 ноября 2011

Вы можете использовать GL_RED и рассматривать его как альфа в фрагментном шейдере (например, output_colour = vec4(1., 1., 1., texture2D(sampler, texcoords).r);).

...