Я вижу много разных шейдеров фрагментов,
#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
. Какая разница, и почему люди обычно настаивают на использовании своих переменных?