Какая связь между gl_Color и gl_FrontColor как в вершинных, так и в фрагментных шейдерах

У меня есть сквозные вершинные и фрагментные шейдеры.

вершинный шейдер

void main(void)
{
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

фрагментный шейдер

void main(void)
{
    gl_FragColor = gl_Color;
}

Они производят пустой рендеринг (черный, а не фоновый цвет, как у glClearBuffer).

Если я измените вершинный шейдер, чтобы установить gl_FrontColor на gl_Color, он отображает нетронутый буфер OpenGl ... с ожидаемым поведением сквозных шейдеров.

void main(void)
{
    gl_FrontColor = gl_Color; //Added line
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}

Я не понимаю, как настройки gl_FrontColor в вершинном шейдере могут изменить значение gl_Color во фрагменте один? Что мне не хватает?

20
задан vrince 21 June 2011 в 18:26
поделиться