从我所看到的,GL_ALPHA8
内部像素格式已从OpenGL 3.1中的OpenGL核心规范中删除。似乎没有更多的像素格式具有alpha通道但没有RGB通道。这是否意味着唯一的选择是创建一个GL_RGBA8
纹理并将RGB组件设置为255,从而浪费75%的内存?
答案 0 :(得分:4)
只需使用GL_R8
格式即可。如果将纹理正确地改变为混合是一个问题,您可以设置swizzle mask以在获取时执行此操作。例如:
GLenum swizzleMask = {GL_ZERO, GL_ZERO, GL_ZERO, GL_RED};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask);
答案 1 :(得分:2)
您可以使用GL_RED
并在片段着色器中将其视为alpha(例如output_colour = vec4(1., 1., 1., texture2D(sampler, texcoords).r);
)。