Урок 171. OpenGL. Цвет.

Обсуждение уроков
Ответить
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Урок 171. OpenGL. Цвет.

Сообщение damager82 » 23 ноя 2015, 08:00

В этом уроке:
- передаем цвет для вершин
- используем varying переменную 


Click here to read this article!
Последний раз редактировалось damager82 06 июн 2017, 23:07, всего редактировалось 2 раза.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

danek130995
Сообщения: 42
Зарегистрирован: 25 янв 2015, 18:57

Re: Урок 171. OpenGL. Цвет.

Сообщение danek130995 » 09 дек 2015, 20:55

Спасибо!

danek130995
Сообщения: 42
Зарегистрирован: 25 янв 2015, 18:57

Re: Урок 171. OpenGL. Цвет.

Сообщение danek130995 » 10 дек 2015, 13:56

Скажите пожалуйста, а почему мы не можем обойтись без varying переменной и передавать значения напрямую во фрагментный шейдер, минуя вершинный?
Например, вот содержимое фрагментного шейдера:

Код: Выделить всё

precision mediump float;
attribute vec4 a_Color;
void main()
{
    gl_FragColor = a_Color;
}
А в OpenGlRenderer все без изменений:

Код: Выделить всё

   aColorLocation = glGetAttribLocation(programId, "a_Color");
        vertexData.position(2);
        glVertexAttribPointer(aColorLocation, 3, GL_FLOAT, false, 20, vertexData);
        glEnableVertexAttribArray(aColorLocation);
Т.е. мы a_Color объявили во фрагментном шейдере и убрали ее в вершинном. Но почему-то не работает так.
Видимо, по слову varying система и определяет, что нужно интерполировать значения.

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 171. OpenGL. Цвет.

Сообщение damager82 » 15 дек 2015, 23:07

Фрагментный шейдер принимает на вход только uniform и varying. В uniform мы передаем константу, которая будет работать для всего примитива, пока он происовывавеся.
А varying, насколько я понял, без вершинного шейдера не работает. Сначала в varying должны попасть значения, соответствующие вершинам, а затем уже из этих вершинных значений система интерполирует (рассчитывает) значение для каждой точки между вершинами и передает это в фрагментный шейдер.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

Etor
Сообщения: 1
Зарегистрирован: 28 окт 2016, 14:31

Re: Урок 171. OpenGL. Цвет.

Сообщение Etor » 28 окт 2016, 14:39

Здравствуйте, может ли кто-нибудь скинуть ссылку на исходники. Все делаю как написано. Даже копипастой пробовал. Но интерполяцию не хочет делать. Выдает только черный экран. С другими уроками проблем не было. Даже начало этого урока все хорошо работает. Но с интерполяцией что то я затупил.

dmitriyvedmid
Сообщения: 1
Зарегистрирован: 26 сен 2017, 17:37

Re: Урок 171. OpenGL. Цвет.

Сообщение dmitriyvedmid » 26 сен 2017, 17:43

Подскажите, пожалуйста, почему так происходит?
photo5354958301621758037.jpg
photo5354958301621758037.jpg (89.12 КБ) 7308 просмотров

MNewLive
Сообщения: 4
Зарегистрирован: 14 ноя 2013, 15:21

Re: Урок 171. OpenGL. Цвет.

Сообщение MNewLive » 01 ноя 2017, 16:54

Кому будет интересно/полезно (частичная)реализация данного проекта на kotlin
https://github.com/mnewlive/open-gl

Иван
Сообщения: 1
Зарегистрирован: 06 авг 2020, 12:16

Re: Урок 171. OpenGL. Цвет.

Сообщение Иван » 06 авг 2020, 12:25

Добрый день, спасибо большое за уроки!
Подскажите пожалуйста, как можно сделать примитивы полупрозрачными или прозрачными?

Пробовал добавить в vertices в части цвета дополнительное значение для альфа канала, при этом в определении пойнтера на цвет также указал, что используется размер 4 вместо 3, stride тоже пересчитал. А также пробовал через glEnable включить GL_ALPHA, и еще несколько значений, где упоминается альфа, но фигуры все равно рисуются обычным цветом, а альфа так и не учитывается

Ответить