我正在尝试使用 WebGL 显示一个简单的效果。当然,这意味着我使用的是 GLSL ES 1.0 规范中定义的片段着色器语言。
我正在使用的代码很大程度上是从其他来源复制的。它设置一个正方形并使用片段和顶点着色器来确定像素颜色。以下代码将只显示一个白色方块。
gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0);
但是,如果我将 alpha 分量更改为1.0
then 它将显示一个黑色方块。
gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); // displays a black square
我假设片段着色器输出的颜色必须与以前的颜色组合。如何确保只有最后一种颜色(无论其 alpha 值如何)是实际选择的要显示的颜色?
或者,也许我的顺序是错误的。可能会有一个后期阶段与来自片段着色器的颜色相结合以产生白色。无论如何,我知道某种混合正在进行,因为当我将 alpha 值更改为 0.5 时,我得到一个灰色方块。我只想知道,白色是从哪里来的?我该如何摆脱它?
据我所知,问题与混合功能无关。代码在 GitHub上。在 Google Chrome 或 Firefox 中试用。