我的应用程序使用 8888 格式的全屏 glSurface 覆盖。对于大多数设备来说,这工作得很好——我可以使用 OpenGL ES 绘制半透明图像,这确实会在我的其他本机视图之上覆盖透明度。
然而,在 Nexus 10 和 Note 2(很可能还有其他一些设备)上,半透明像素在物理显示器上看起来并不正确,即使通过 DDMS 截取的屏幕截图看起来绝对正确!这让我很困惑 - 视觉显示与屏幕截图有何不同?
对于帧缓冲区中 alpha 值不是 1 (0xff) 或 0 (0x00) 的任何像素,似乎都会出现这种奇怪现象。
我附上了来自 Nexus 10 的 DDMS 屏幕截图,显示了一张完全符合其应有的测试卡图像。我还附上了显示器上的一张照片,显示了一个非常不同的图像......如上所述,EGL 覆盖 alpha 值不是 0x00 或 0xff 的像素似乎显示不正确。注 2 相同。
有谁知道如何解决这个问题?这对我们来说是一个主要障碍,因为我们甚至不知道以编程方式确定设备显示屏是否出现问题的方法。