簡體   English   中英

android / opengles alpha紋理不是半透明而是二進制透明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM