Objective c OpenGL透明纹理(混合)

Objective c OpenGL透明纹理(混合),objective-c,xcode,cocoa,opengl,Objective C,Xcode,Cocoa,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);

我需要使我的一个纹理透明。我怎么做

处理我的纹理的所有代码是:

    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);

为了使纹理完全透明(完全alpha),我必须更改/添加哪些内容?

提供的代码只是设置纹理。您还需要使用启用混合

    glEnable(GL_BLEND);

并设置相应的。

请注意,具有透明纹理与渲染透明几何体不同。混合是你需要的一件事,z排序可能是另一件事。@Kos我会解释我在做什么。我加载图像并从中生成纹理。我需要将纹理的alpha通道更改为0。在这种情况下,我可以将alpha值从0.0更改为1.0,以后可以使用类似笔刷工具的工具。我使用多重纹理,所以一个纹理在另一个纹理上,所以如果第二个纹理alpha设置为0,则只有第一个纹理可见,当我将其更改为1时,第二个纹理可见。我想我不需要z排序。但是谢谢你的帮助。哦,如果你不想绘制透明的几何体,并且计划只使用alpha通道来混合不同的纹理,从而在不透明的对象上获得最终的颜色,那么你确实不需要混合或z排序。只需对碎片着色器中的所有纹理进行采样,并使用您想要的任何公式(如
T1.rgb*T1.a+T2.rgb*(1-T1.a
)获得最终颜色。谢谢,我将尝试您建议的解决方案并给出反馈。