Войти
ПрограммированиеФорумГрафика

OpenGL Вопросы (85 стр)

Страницы: 180 81 82 83 84 85
#1260
8:58, 14 апр 2024

Mirrel
> Просто если будет много шейдеров и куча вершин, то всю эту привязку производить каждый раз при прорисовке?

Есть VAO (glGenVertexArrays / glBindVertexArrays).

Mirrel
> при переключении шейдера на другой, все привязанные данные слетят?

glVertexAttribPointer привязывает данные в буферах не к шейдеру, а к номеру атрибута. Если в разных шейдерах номера атрибутов совпадают - будет работать.

#1261
10:26, 14 апр 2024

Mirrel
> GLES 2.0
Dmitry_Milk
> Есть VAO
нет его в этой версии.

Dmitry_Milk
> Если в разных шейдерах номера атрибутов совпадают - будет работать.
да, это я понимаю. Но когда разных данных много, то такое ощущение, что надо больше данных засунуть в один шейдер, в один массив вершин... и постараться меньше что-то пытаться менять...
  Идеально: один шейдер, один массив вершин/цвета/текстур, туда же свет запихнуть... хорошая каша получится...

#1262
12:12, 14 апр 2024

Если VAO нет, то ты указатели прямо в контекст устанавливаешь. Шейдеры тут вообще не при делах. VAO позволяет сохранить эти указатели в объекте и не устанавливать перед каждой отрисовкой, а устанавливать только текущий VAO. Шейдеры тут опять же не при чем. Мухи отдельно, котлеты отдельно ☝

#1263
12:36, 14 апр 2024

Mirrel
> Но когда разных данных много, то такое ощущение, что надо больше данных засунуть в один шейдер, в один массив вершин... и постараться меньше что-то пытаться менять...

Не знаю, что там может GLES 2.0, но если в его версии glsl можно явно указывать привязку атрибутов, то надо просто заранее составить список всех возможных атрибутов (добавляя новые по необходимости), все их настроить, и в каждом конкретном шейдере явно указывать привязку атрибутов, исходя из этого списка.

Страницы: 180 81 82 83 84 85
ПрограммированиеФорумГрафика