簡體   English   中英

適用於Android的OpenGL ES中的透明紋理

[英]Transparent texture in OpenGL ES for Android

我正試圖在opengl中設置四邊形紋理的透明度,使用混合函數進行游戲並沒有幫助他們在谷歌上做任何事情。 有什么建議么?

我有一個類似的問題,一個代碼正常工作而另一個代碼沒有。 經過大量的日志記錄和調試,我發現差異是一行代碼。

在具有工作alpha的代碼中,我在設置渲染器之前調用了以下內容。

    setEGLConfigChooser(false)

如果這沒有幫助,這里有幾個其他指針......

加載紋理之前 ,請確保已啟用混合。

例如:

    // Enable blending using premultiplied alpha.
    gl.glEnable(GL10.GL_BLEND);
    gl.glBlendFunc(GL10.GL_ONE, GL10.GL_ONE_MINUS_SRC_ALPHA);

...並確保您用於生成紋理的位圖實際上具有alpha分量。

我能夠使用不同的方法修復列出的問題。 我先設定

gl.glTexEnvf(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, /*GL10.GL_REPLACE*/ GL10.GL_MODULATE);

然后能夠使用設置紋理的alpha

gl.glColor4f

在Ron的回答之后,我更接近於解決我沒有顯示紋理透明度的問題。 我的下一個問題是,我在GLSurfaceView后面有一個非GL SurfaceView並使用:

setEGLConfigChooser(false);

我看到我的紋理還可以,但我的整個SurfaceView都被塗黑了。 以下修復了我的問題:

setEGLConfigChooser(8, 8, 8, 8, 0, 0);

將false設置為唯一參數是禁用深度測試的一種方法,但您也可以通過將第2個參數設置為0來有效地執行相同操作。 前者將創建一個默認的RGB_565配置,而我需要RGBA_8888配置,因此更改。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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