2015-09-21 60 views
1

因此,我正在使用OpenGL ES 2.0在3D環境中使用一系列具有圖像紋理的正方形在android中製作動態壁紙。我遇到的問題是,我得到了一個奇怪的黑線,閃爍的相機移動。正方形應該是透明的,我無法弄清楚是什麼導致了這個問題或者如何解決這個問題。我嘗試過使用抗鋸齒技術,並且已經使用了兩個設置透明度的方法,分別是: GLES20.glBlendFunc(GLES20.GL_ONE,GLES20.GL_ONE_MINUS_SRC_ALPHA); 和在OpenGL ES 2.0中透明邊緣的問題

GLES20.glBlendFunc(GLES20.GL_SRC_ALPHA, GLES20.GL_ONE_MINUS_SRC_ALPHA); 

這是我的壁紙看起來像現在。三層(背景,女孩,草),草和女孩都在頂部邊緣呈現出一條黑線。

enter image description here

任何人都知道我做錯了什麼,或者如何解決這一問題?

+0

您是否將圖層拉回前面?另外,你的紋理包裝參數是什麼? –

+0

反鋸齒(以MSAA的形式)通常不會解決此問題,實際上更有可能導致此問題。它不會更改用於計算像素的紋理拾取的採樣率。紋理採樣一次,只有像頂點屬性這樣的東西是反鋸齒的。這裏所看到的很可能是對紋理沒有固定紋理座標的紋理進行線性過濾的結果,即使這些相鄰紋理元素是不透明和無意義的,它也會在對紋理進行採樣時獲取並平均4個最近的鄰居。 –

+0

所以,是的,我正在回到前面(背景,女孩,草地)。我的紋理綁定如下所示: \t \t'GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D,GLES20.GL_TEXTURE_MIN_FILTER,GLES20.GL_LINEAR);' –

回答

1

所以,看起來安東M.科爾曼是對的。我所要做的就是夾住紋理座標去除黑色邊緣。 添加:

GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_CLAMP_TO_EDGE); 
    GLES20.glTexParameteri(GLES20.GL_TEXTURE_2D, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_CLAMP_TO_EDGE); 

似乎是做伎倆。