kea*_*ine 5 android opengl-es glsl opengl-es-2.0
我们在使用Adreno 220 GPU的索尼Xperia S手机上遇到GLSL alpha测试问题.设备正在运行Android 4.0.4.
在Adreno 200,Adreno 205,Adreno 225以及Tegra2,Mali400和PowerVR GPU上它运行良好.
着色器代码:
// vertex
uniform highp mat4 uMVPMatrix;
attribute highp vec4 aPosition;
attribute highp vec2 aTextureCoord;
varying mediump vec2 vTextureCoord;
void main() {
gl_Position = uMVPMatrix * aPosition;
vTextureCoord = aTextureCoord;
}
// fragment
precision mediump float;
varying mediump vec2 vTextureCoord;
uniform sampler2D sTexture;
uniform sampler2D sAlpha;
uniform vec4 uBlendColor;
void main() {
vec4 base = texture2D(sTexture, vTextureCoord);
if(texture2D(sAlpha, vTextureCoord).r < 0.5){ discard; }
else { gl_FragColor = base * uBlendColor; }
}
Run Code Online (Sandbox Code Playgroud)
bug的屏幕截图:

在其他设备上更正结果:

请告知可能导致此类视觉故障的原因,找到原因的方法以及可能的解决方法.
编辑:同样的错误确认HTC Rezound的旧库存ROM.有关详细信息,请参阅我的回答
我要求在 xda-developers 上的不同固件上测试应用程序。在某些设备上它工作得很好,而在另一些设备上却出现了这种视觉故障。
所以我得出的结论是,这与 OpenGL 驱动程序中的一些错误有关,该错误已在某些非库存 ROM 中修复。
编辑:确认它是旧版高通 Adreno 220 驱动程序中的一个错误。在配备 4.0.3 ROM 的HTC Rezound手机(也是 Adreno 220)上也存在同样的错误,它不仅出现在我的应用程序中,而且还出现在某些游戏中 - 某些对象上缺少某些线条或像素。生根并安装 CM 4.1 后,错误消失了。
| 归档时间: |
|
| 查看次数: |
1414 次 |
| 最近记录: |