我对 OpenGl 完全陌生,所以请善待。在我的应用程序中,我使用的是 JPG 和 PNG 纹理。在 HTC Desire (android 2.2) 或 Xperia x8 (android 2.1) 上一切正常,屏幕如下:http: //imageshack.us/photo/my-images/534/xperia.png/)。但在三星 Galaxy Tab 10.1 (android 3.2) 或三星 Galaxy S3 (android 4.x) 等较新的设备上,JPG 纹理是按颜色分隔的吗?并转移:http: //imageshack.us/photo/my-images/855/samsungbs.png/。不过,PNG 始终显示正常。
我正在使用 GLSurfaceView 进行绘图。我负责制作纹理的代码如下所示:
gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[i]);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_REPEAT);
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_REPEAT);
if (bitmaps[i].hasAlpha()) {
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, bitmaps[i], 0);
} else {
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGB, bitmaps[i], 0);
}
通过“bitmaps[i].hasAlpha()”,我试图区分给定的位图是 jpg 还是 png。我哪里错了?