我需要使我的一个纹理透明。我该怎么做?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);
我有什么改变/添加,使质感完全透明(全-α)?
请注意,具有透明纹理与渲染透明几何图形不同。混合是你需要的一件事,z分类可能是另一种。 – Kos
@Kos我会解释我在做什么。我加载图像并从中制作纹理。我需要将纹理的alpha通道更改为0.在这种情况下,我可以使用类似刷子工具的方式将alpha从0.0更改为1.0。我使用多纹理,所以一个纹理是另一个纹理,所以如果第二纹理alpha设置为0,只有第一纹理将可见,并且当我将其更改为1秒纹理将可见。我不认为我需要z排序。但谢谢你的帮助。 – hockeyman
哦,如果你不想绘制透明的几何图形,并计划使用alpha通道只用于混合不同的纹理,以获得不透明物体上的最终颜色,那么实际上你既不需要混合也不需要z-排序。只需对你的片段着色器中的所有纹理进行采样,然后使用任何你想要的公式来获得最终颜色(比如'T1.rgb * T1.a + T2.rgb *(1-T1.a')。 – Kos