Урок 171. OpenGL. Цвет.
Урок 171. OpenGL. Цвет.
В этом уроке:
- передаем цвет для вершин
- используем varying переменную
Click here to read this article!
- передаем цвет для вершин
- используем varying переменную
Click here to read this article!
Последний раз редактировалось damager82 06 июн 2017, 23:07, всего редактировалось 2 раза.
-
- Сообщения: 42
- Зарегистрирован: 25 янв 2015, 18:57
Re: Урок 171. OpenGL. Цвет.
Спасибо!
-
- Сообщения: 42
- Зарегистрирован: 25 янв 2015, 18:57
Re: Урок 171. OpenGL. Цвет.
Скажите пожалуйста, а почему мы не можем обойтись без varying переменной и передавать значения напрямую во фрагментный шейдер, минуя вершинный?
Например, вот содержимое фрагментного шейдера:
А в OpenGlRenderer все без изменений:
Т.е. мы a_Color объявили во фрагментном шейдере и убрали ее в вершинном. Но почему-то не работает так.
Видимо, по слову varying система и определяет, что нужно интерполировать значения.
Например, вот содержимое фрагментного шейдера:
Код: Выделить всё
precision mediump float;
attribute vec4 a_Color;
void main()
{
gl_FragColor = a_Color;
}
Код: Выделить всё
aColorLocation = glGetAttribLocation(programId, "a_Color");
vertexData.position(2);
glVertexAttribPointer(aColorLocation, 3, GL_FLOAT, false, 20, vertexData);
glEnableVertexAttribArray(aColorLocation);
Видимо, по слову varying система и определяет, что нужно интерполировать значения.
Re: Урок 171. OpenGL. Цвет.
Фрагментный шейдер принимает на вход только uniform и varying. В uniform мы передаем константу, которая будет работать для всего примитива, пока он происовывавеся.
А varying, насколько я понял, без вершинного шейдера не работает. Сначала в varying должны попасть значения, соответствующие вершинам, а затем уже из этих вершинных значений система интерполирует (рассчитывает) значение для каждой точки между вершинами и передает это в фрагментный шейдер.
А varying, насколько я понял, без вершинного шейдера не работает. Сначала в varying должны попасть значения, соответствующие вершинам, а затем уже из этих вершинных значений система интерполирует (рассчитывает) значение для каждой точки между вершинами и передает это в фрагментный шейдер.
Re: Урок 171. OpenGL. Цвет.
Здравствуйте, может ли кто-нибудь скинуть ссылку на исходники. Все делаю как написано. Даже копипастой пробовал. Но интерполяцию не хочет делать. Выдает только черный экран. С другими уроками проблем не было. Даже начало этого урока все хорошо работает. Но с интерполяцией что то я затупил.
-
- Сообщения: 1
- Зарегистрирован: 26 сен 2017, 17:37
Re: Урок 171. OpenGL. Цвет.
Подскажите, пожалуйста, почему так происходит?
Re: Урок 171. OpenGL. Цвет.
Кому будет интересно/полезно (частичная)реализация данного проекта на kotlin
https://github.com/mnewlive/open-gl
https://github.com/mnewlive/open-gl
Re: Урок 171. OpenGL. Цвет.
Добрый день, спасибо большое за уроки!
Подскажите пожалуйста, как можно сделать примитивы полупрозрачными или прозрачными?
Пробовал добавить в vertices в части цвета дополнительное значение для альфа канала, при этом в определении пойнтера на цвет также указал, что используется размер 4 вместо 3, stride тоже пересчитал. А также пробовал через glEnable включить GL_ALPHA, и еще несколько значений, где упоминается альфа, но фигуры все равно рисуются обычным цветом, а альфа так и не учитывается
Подскажите пожалуйста, как можно сделать примитивы полупрозрачными или прозрачными?
Пробовал добавить в vertices в части цвета дополнительное значение для альфа канала, при этом в определении пойнтера на цвет также указал, что используется размер 4 вместо 3, stride тоже пересчитал. А также пробовал через glEnable включить GL_ALPHA, и еще несколько значений, где упоминается альфа, но фигуры все равно рисуются обычным цветом, а альфа так и не учитывается