半透明のアルファ値が含まれるPNGをAndroidでロードして普通にαブレンド(GL_ONE/GL_ONE_MINUS_SRC_ALPHA)したとき、半透明部分が黒くなる現象が発生した。 PNGのロード時にアルファ値がピクセルのRGBカラーに掛けられてしまい(Premultiplied Alpha)、ピクセルの色が暗くなり、アルファ値が失われる(32ビットカラーのAが255になる)事が原因だった。GLUtils.texImage2D()がpremultiplyしてしまう。 回避方法は下のURLで見つかった。 Google グループ GLUtils.texImage2D()は使用せず、代わりに独自のtexImage2Dを用意してそちらを使用する。 //GLUtils.texImage2D(GL_TEXTURE_2D, 0, bmp, 0); { int[] pixels = new int[