GL_ALPHA8已从OpenGL 3.1中删除,有哪些替代方案?

时间:2011-11-17 18:55:00

标签: opengl opengl-3

从我所看到的,GL_ALPHA8内部像素格式已从OpenGL 3.1中的OpenGL核心规范中删除。似乎没有更多的像素格式具有alpha通道但没有RGB通道。这是否意味着唯一的选择是创建一个GL_RGBA8纹理并将RGB组件设置为255,从而浪费75%的内存?

2 个答案:

答案 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);)。