Opengl 简单片段着色器在纹理上覆盖半透明三角形条

cua*_*tro 3 opengl shader transparency glsl

我有一个带纹理的三角形条,形成一个四边形。当您单击它时,我希望周围的区域用半透明的四边形标记,这样您仍然可以看到下面的纹理。我的四边形显示正确,但它们根本不透明,并且完全覆盖了下面的任何内容。

我有一个非常简单的片段着色器,我认为可以使用glEnable(GL_BLEND)glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)

#version 130

out vec4 flatColor;

void main(void)
{
    flatColor = vec4(0.0,1.0,0.0,0.5);
}
Run Code Online (Sandbox Code Playgroud)

如果我用一个简单的图像对四边形进行纹理化,它可以很好地工作 RGBA(0,255,0,128),但我不想为我想要使用的每种颜色创建一个纹理,并且希望通过着色器来完成它。

cua*_*tro 5

我是个白痴,没有意识到我没有从后往前画,所以混合混乱了。一旦我固定了排序顺序,透明效果就如我想要的那样工作了。