据我所知,GL_ALPHA8
内部像素格式已从 OpenGL 3.1 中的 OpenGL 核心规范中删除。似乎没有更多具有 Alpha 通道但没有 RGB 通道的像素格式。这是否意味着唯一的选择是创建GL_RGBA8
纹理并将 RGB 分量设置为 255,因此浪费了 75% 的内存?
问问题
1225 次
2 回答
4
只需使用GL_R8
格式。如果将纹理更改为正确混合是一个问题,您可以设置一个混合蒙版以在获取时执行此操作。例如:
GLenum swizzleMask = {GL_ZERO, GL_ZERO, GL_ZERO, GL_RED};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask);
于 2011-11-17T19:56:47.720 回答
2
您可以GL_RED
在片段着色器中使用并将其视为 alpha(例如output_colour = vec4(1., 1., 1., texture2D(sampler, texcoords).r);
)。
于 2011-11-17T19:10:38.737 回答