OpenGL ES 我用带羽化的png做贴图为什么羽化不部分会有黑影呢?

解决方案 »

  1.   

    这个似乎在android版块不容易得到解答……
      

  2.   

    问题已解决
    贴出网友的解决方法
    希望能帮到遇到相同问题的的朋友。PNG的透明異常是由於SRC的R,G,B分別已經先乘上SRC的Alpha(0~1)
    所以當我們使用:glBlendFunc(GL11.GL_SRC_ALPHA,GL11.GL_ONE_MINUS_SRC_ALPHA); 
    並且用:GLUtils.texImage2D(GL11.GL_TEXTURE_2D, 0, bmp, 0);
    載入圖片Texture的時候,OpenGL的結果會出現SRC_COLOR * SRC_ALPHA * SRC_ALPHA + (1-SRC_ALPHA)*DST_COLOR
    而我們要的正確結果是SRC_COLOR * SRC_ALPHA + (1-SRC_ALPHA)*DST_COLOR
    因此用不適當的方法載入PNG圖片的RGB數值(有ALPHA的部分)會比正常值來的低!※解決方法是用:glBlendFunc(GL11.GL_ONE,GL11.GL_ONE_MINUS_SRC_ALPHA); 
    但這方法會造成glColor4f無法使用,必須調回GL_SRC_ALPHA。
    若用gl.glTexImage2D來載入圖片,就可以維持GL_SRC_ALPHA而不產生黑邊,但卻是一件苦差事:詳情點這http://groups.google.com/group/android-developers/browse_thread/thread/baa6c33e63f82fca。
    總之希望能幫助有遇到這個困難的人HAHA