我看到了很多不同的片段着色器,
#version 130
out vec4 flatColor;
void main(void)
{
flatColor = vec4(0.0,1.0,0.0,0.5);
}
它们都为“输出颜色”使用了一个不同的变量(在这种情况下flatColor
)。那么OpenGL如何知道您要做什么?
我猜这行得通,因为flatColor
唯一的变量定义为out
,但是您可以添加更多out
变量,不是吗?还是会崩溃?
实际上,作为测试,我只是运行了此命令:
#version 330
in vec2 TexCoord0;
uniform sampler2D TexSampler;
out vec4 x;
out vec4 y;
void main()
{
y = texture2D(TexSampler, TexCoord0.xy);
}
无论我使用x
还是,效果都很好y
。
此外,我们有一个预定义的gl_FragColor
。有什么区别,为什么人们通常坚持使用自己的变量?