我正在绘制一个地图纹理,并在其上面绘制一个颜色条纹理。两者都有alpha通道,我正在使用混合,设置为
// Turn on blending
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
但是,会发生以下情况:
带有alpha通道的顶部纹理(颜色条)强加了黑色像素,我不想发生这种情况。地图纹理应出现在colorbar alpha = 0的后面。
这与混合定义有关吗?我该怎么改变它?
答案 0 :(得分:2)
假设纹理具有alpha通道并且在正确的位置它是透明的,我怀疑问题在于渲染顺序和深度测试。
让我们假设您首先渲染比例纹理。它与黑色背景正确融合。然后渲染它后面的橙色纹理,但是缩放纹理中的像素具有更高的深度值,并导致那里的橙色纹理被丢弃。
因此,请确保您按照前面的顺序渲染所有透明的内容,或者最接近最近的内容。
如果没有订购独立透明度,alpha透明度的常用方法如下:
glDepthMask
)对于粒子,你有时可以在没有分类的情况下离开,它看起来还不错。另一种方法是使用alpha测试或使用alpha覆盖与多重采样帧缓冲。