2012-07-02 247 views
0

我需要使我的一個紋理透明。我該怎麼做?OpenGL透明紋理(混合)

來處理我的紋理所有的代碼是:

glBindTexture(GL_TEXTURE_2D, textureName); 
    glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); 
    glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, textureImg); 

我有什麼改變/添加,使質感完全透明(全-α)?

+0

請注意,具有透明紋理與渲染透明幾何圖形不同。混合是你需要的一件事,z分類可能是另一種。 – Kos

+0

@Kos我會解釋我在做什麼。我加載圖像並從中製作紋理。我需要將紋理的alpha通道更改爲0.在這種情況下,我可以使用類似刷子工具的方式將alpha從0.0更改爲1.0。我使用多紋理,所以一個紋理是另一個紋理,所以如果第二紋理alpha設置爲0,只有第一紋理將可見,並且當我將其更改爲1秒紋理將可見。我不認爲我需要z排序。但謝謝你的幫助。 – hockeyman

+0

哦,如果你不想繪製透明的幾何圖形,並計劃使用alpha通道只用於混合不同的紋理,以獲得不透明物體上的最終顏色,那麼實際上你既不需要混合也不需要z-排序。只需對你的片段着色器中的所有紋理進行採樣,然後使用任何你想要的公式來獲得最終顏色(比如'T1.rgb * T1.a + T2.rgb *(1-T1.a')。 – Kos

回答

2

提供的代碼只是設置紋理。您將需要還能夠使用

glEnable(GL_BLEND); 

,並建立相應的混合。

+0

謝謝,我會嘗試你的建議解決方案,並給予反饋。 – hockeyman

+0

它的工作原理。再次感謝您:) – hockeyman