Я вижу много разных шейдеров фрагментов,
#version 130
out vec4 flatColor;
void main(void)
{
flatColor = vec4(0.0,1.0,0.0,0.5);
}
И все они используют другую переменную для цвета "out" (в данном случае 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. Какая разница, и почему люди обычно настаивают на использовании своих переменных?