我目前正在扩展我的OpenGL-UI系统,为此我重写了字体部分,并且在使用mipmapping时遇到了一个问题。因为图片上说的话不止几千个字:

正如您可以看到字体的透明度正在消失(文本应该显示8次!),这种情况只有在使用LUMINANCE_ALPHA-textures时才会发生。加载纹理的代码基本相同,但它们使用的格式不同,这是LUMINANCE_ALPHA使用的:
TexImageInternalFormat.LUMINANCE_ALPHA,TexImageFormat.LUMINANCE_ALPHA,TexImagePixelType.UNSIGNED_BYTE
启用线性滤波,并将钳位设置为GL_CLAMP_TO_EDGE。对我来说,这似乎是一个mipmapping的问题,但我尝试了很多不同的设置,它是行不通的,正如我已经说过,RGBA纹理工作没有任何问题。该应用程序还运行在iOS上,因此与RGBA相比,使用LUMINANCE_ALPHA-texture可以节省大量内存。
是什么导致了这一切,我该如何解决呢?
发布于 2013-01-18 19:12:58
事实证明,ImageFormat设置是错误的:
LA8 = new ImageFormat("LA8", TexImageInternalFormat.LUMINANCE_ALPHA, TexImageFormat.LUMINANCE_ALPHA, TexImagePixelType.UNSIGNED_BYTE, 4);最后一个数字表示这种格式的每个像素的字节数,如果是LUMINANCE_ALPHA,则应为2。PVR读取器不会抱怨丢失的图像数据,也不会抛出任何异常。将4改为2解决了这个问题。
https://stackoverflow.com/questions/14390230
复制相似问题