我正在扩展我的OpenGL-UI系统,为此我重写了字体部分并遇到了使用mipmapping时出现的问题。因为图像说出了数千个单词:
正如你所看到的那样,字体的透明度逐渐淡出(文本应该显示8次!),这只有在使用LUMINANCE_ALPHA
- 纹理时才会发生。加载纹理的代码基本相同,但它们使用的格式不同,这是LUMINANCE_ALPHA
使用的:
TexImageInternalFormat.LUMINANCE_ALPHA,TexImageFormat.LUMINANCE_ALPHA,TexImagePixelType.UNSIGNED_BYTE
启用线性滤波并将钳位设置为GL_CLAMP_TO_EDGE
。对我来说,它似乎是一个mipmapping问题,但我尝试了很多不同的设置,它没有工作,正如我已经说过,RGBA纹理工作没有任何问题。该应用程序也可以在iOS上运行,因此使用LUMINANCE_ALPHA
- 纹理与RGBA相比可以节省大量内存。
什么可能导致这种情况,我该如何解决?
答案 0 :(得分:0)
事实证明ImageFormat
设置错误:
LA8 = new ImageFormat("LA8", TexImageInternalFormat.LUMINANCE_ALPHA, TexImageFormat.LUMINANCE_ALPHA, TexImagePixelType.UNSIGNED_BYTE, 4);
最后一个数字表示此格式的每个像素的字节数,如果是LUMINANCE_ALPHA
,则应为2。 PVR阅读器不会抱怨丢失的图像数据,也没有抛出任何异常。将4改为2可以解决问题。