OpenGL ESでは、透明ピクセルを持つテクスチャをどのようにロードしますか?

StackOverflow https://stackoverflow.com/questions/611219

  •  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);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top