2016-12-09 10 views
1

Я пытаюсь обновить старый GLSL 120 шейдерных, что у меня есть, и, хотя большинство из них было от него было просто, то следующий у меня возникают проблемы с:Обновление устаревших GLSL шейдеры в современной GLSL

вершинные шейдеры: gl_FrontSecondaryColor, gl_FrontColor

пиксельный шейдер: gl_Color, gl_SecondaryColor

проблема заключается в том, что я не был в состоянии найти широкие альтернативы для ything 3.x и выше.

Например: Замена gl_FragColor является создание

layout (location = 0) out vec4 fragColor; 

Но для других вышеизложенным, как именно они будут обрабатываться?

+0

Графический конвейер OpenGL сильно изменился, посмотрите на https://learnopengl.com/#!Advanced-OpenGL/Advanced-GLSL – MrKiwi

+0

@MrKiwi Да, он сильно изменился, но то, что я имею в виду это то, что современная эквивалентность, так же, как вы больше не используете gl_FragColor, gl_ProjectViewMatrix и т. д. Вместо этого вы создаете свои собственные униформы и переменные. – SpicyWeenie

ответ

1

gl_FrontSecondaryColor, gl_FrontColor

Это только вершинный шейдер выходы. Они не особенные.

gl_Color, gl_SecondaryColor

Эти магические пиксельный шейдер вещи, которые эффективно выполнять условную логику внутри вашего шейдера. Они проводят тестирование передних и задних поверхностей, а затем получают передний или задний цвет соответствующего типа.

Итак, если вы делаете двустороннюю визуализацию, вам нужно будет провести тест самостоятельно. VS выдаст переднее и заднее значение, и FS будет вводить оба, но выберите один для использования в зависимости от того, с чем сталкивается треугольник. built-in gl_FrontFace variable указывает, находится ли текущее лицо спереди или сзади. Вы используете это, чтобы выбрать, какое значение ввода использовать.

И если вы не делаете двустороннюю визуализацию ... вам все равно. У вас просто есть VS-выход и вход FS.

 Смежные вопросы

  • Нет связанных вопросов^_^