私はOpenGlにまったく慣れていないので、親切にしてください。私のアプリケーションでは、JPG と PNG のテクスチャを使用しています。HTC Desire (android 2.2) または Xperia x8 (android 2.1) ではすべて正常に表示されます。画面は次のとおりです: http://imageshack.us/photo/my-images/534/xperia.png/ )。しかし、Samsung Galaxy Tab 10.1 (android 3.2) や Samsung 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 かを区別しようとしています。どこが間違っているのでしょうか?