[英]Android Opengl 2.0 Alpha Blending issue - half transparent textures
[英]android/opengles alpha textures not semitransparent but binary transparent
我正在使用alpha通道繪制一些紋理,但是當它們顯示時,它看起來像alpha通道只是二進制。 因此像素是透明的或不透明的,盡管在紋理文件本身中像素是半透明的。 混合設置如下:
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);
這個問題有解決方法嗎?
以上顯示了它應該如何,以下顯示它是如何:
試試這個:
gl.glEnable(GL10.GL_BLEND);
gl.glBlendFunc(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA);
gl.glEnable(GL10.GL_ALPHA_BITS);
//draw...
gl.glDisable(GL10.GL_ALPHA_BITS);
看起來它正在使用alpha測試而不是alpha混合,這可以解釋閾值行為。 雖然默認情況下未啟用,但可能值得嘗試:
gl.glDisable(GL10.GL_ALPHA_TEST);
您使用的GLSurfaceView表面格式是什么? 它是半透明(不透明)格式嗎?
surfaceView.getHolder().setFormat(PixelFormat.TRANSLUCENT);
此外,EGL設置必須具有alpha支持集。 這將為您提供最好的質量......
surfaceView.setEGLConfigChooser(8, 8, 8, 8, 16, 0);
編輯:另一個想法是,您可能沒有使用glTexImage2D以半透明格式將圖像上傳到OpenGL?
您是否將PNG存儲到僅具有1位alpha的GL紋理,例如16位5-5-5-1格式? 這會導致上述行為。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.