OpenGL ESでは、透明ピクセルを持つテクスチャをどのようにロードしますか?
-
03-07-2019 - |
質問
そして、正しく表示されましたか?例は、背景に別のテクスチャを表示しながら、長方形に丸いボールを持つことです。
編集:現時点では、テクスチャをロードすると、ソース画像の透明ピクセルが黒で表示されます。
解決
iPhoneおよびN95の場合、これは機能します。
生データからテクスチャをロードする場合、内部およびソース形式をGL_RGBAに設定します。
glTexImage2D(GL_TEXTURE_2D, 0,
GL_RGBA,
textureWidth,
textureHeight,
0,
GL_RGBA,
GL_UNSIGNED_BYTE,
pointerToPixels);
そしてレンダリング時に、アルファブレンドを有効にします:
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
他のヒント
@Virneが提供する答えは正しいものであり、わずかな変更を加えるだけでAndroidデバイスで使用できるようになりました。使用した myImage
オブジェクトは、透明度のある標準の.png画像です。
これを使用してテクスチャを作成しました:
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, myImage, 0);
そして(Virneと同様)、レンダリング時にアルファブレンドを有効にしました:
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL10.GL_BLEND);
所属していません StackOverflow