2012-07-02 213 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