【发布时间】:2012-09-14 20:16:32
【问题描述】:
我对 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。我哪里错了?
【问题讨论】:
-
如果去掉 alpha 检查并同时使用 RGBA 会发生什么?
-
@Aetherna 您能否再次上传您的示例图片?链接已失效。我可能有类似的问题,如果我可以通过检查您的图像进行验证,那就太好了。非常感谢!
标签: android opengl-es png textures jpeg