据我所知,GL_ALPHA8内部像素格式已从 OpenGL 3.1 中的 OpenGL 核心规范中删除。似乎不再有带有 alpha 通道但没有 RGB 通道的像素格式。这是否意味着唯一的选择是创建GL_RGBA8纹理并将 RGB 分量设置为 255,从而浪费 75% 的内存?
只需使用GL_R8格式即可。如果更改纹理以正确混合是一个问题,您可以设置一个混合蒙版以在获取时执行此操作。例如:
GLenum swizzleMask = {GL_ZERO, GL_ZERO, GL_ZERO, GL_RED};
glTexParameteriv(GL_TEXTURE_2D, GL_TEXTURE_SWIZZLE_RGBA, swizzleMask);
Run Code Online (Sandbox Code Playgroud)