2011-01-02 6 views
1

他のテクスチャ上に重ねて表示される背景透明度を持つイメージを読み込もうとしています。私が試してロードするとき、私は白い画面です。テクスチャは512×512で、Photoshopには24ビットのPNG形式で保存されます(Webおよびデバイス用のPhotoshop保存設定ウィンドウの標準PNG仕様)。なぜそれが表示されない任意のアイデア?透明性のないテクスチャは問題なく表示されます。ここに私のloadTexturesメソッドがあります:OpenGL ESとAndroidで透明度を持つテクスチャを読み込む問題

public void loadGLTexture(GL10 gl, Context context) { 
    //Get the texture from the Android resource directory 
    Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.m1); 
    Bitmap normalScheduleLines = BitmapFactory.decodeResource(context.getResources(), R.drawable.m1n); 


    //Generate texture pointers... 
    gl.glGenTextures(3, textures, 0); 
    //...and bind it to our array 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[1]); 
    //Create Nearest Filtered Texture 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 
    gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP, GL11.GL_TRUE); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE); 
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); 

    bitmap.recycle(); 


    //Bind our normal schedule bus map lines 
    gl.glBindTexture(GL10.GL_TEXTURE_2D, textures[0]); 
    //Create Nearest Filtered Texture 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR); 
    gl.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_GENERATE_MIPMAP, GL11.GL_TRUE); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE); 
    gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_T, GL10.GL_CLAMP_TO_EDGE); 
    GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, GL10.GL_RGBA, normalScheduleLines, 0); 

    normalScheduleLines.recycle(); 

} 
+0

あなたの.pngは32bppにする必要があります... Photoshopが正しいことをしているExplorer(またはFinderなど、Mac上のもの)をチェックしてください。あなたは明示的に内部のテクスチャタイプを設定する必要はありません...私は常にGLに透明なPNGを使用しますが、問題はまだありません。 –

+0

アルファコンポーネントがbtwのものをレンダリングする前にGL_BLENDを有効にするのを忘れないでください。 –

答えて

2

実際には、自動的に生成されたミップマップがPNGの表示を妨げていました。私は

十分
gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_NEAREST); 

と確かに

gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR_MIPMAP_NEAREST); 

を変更し、それが働きました。なぜそれがアルファとのPNGが好きではないのか分かりませんが、私がここに投稿することを知っていればわかります。

+0

'GL_LINEAR_NEAREST'とは何ですか?私は 'GL_LINEAR'、' GL_LINEAR_MIPMAP_NEAREST'、 'GL_NEAREST'について聞いたことがありますが、' GL_LINEAR_NEAREST'は聞いていません。 – genpfault

+0

typo、私の間違い。修正されました。 – jfisk

関連する問題