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

[OpenGL][шейдеры]немного общего непонимания (2 стр)

Страницы: 1 2
#15
11:51, 10 ноя. 2011

trex
Одна кофта у всех людей или у каждого человека своя уникальная кофта?
Это две крайности, и обе не верны.


#16
12:09, 10 ноя. 2011

Executor
Ок. Спасибо за намек.

#17
3:22, 13 ноя. 2011

Потихоньку разбираюсь с шейдерами и случился затык в понимании работы буферов.
Вот что понял я:
1. Мы можем нагенерировать буффер через GenBuffer(...)
2. Мы можем биндить буффер на ARRAY_BUFFER через BindBuffer(...)
3. Мы можем наполнить буффер данными через BufferData(...)

До этого места все понятно.

Ну дальше возникает вопрос, как нам использовать данные, которые мы записали в наш буффер.
Как понял я, после того, как мы назначили буффер на ARRAY_BUFFER, мы можем используюя
VertexAttribPointer(...) указать, какой кусок буфера отвечает за определенный атрибут. Атрибут, ка обычно, указывается
по своему location, но значение pointer воспринимается уже не как адрес в client-memory, а как адрес в буфере,
причем этот адрес должен быть выражен в базовых машинных единицах.

Пусть у нас есть буфер заполненный из такого массива:
GLfloat data[] = {0,1,2,3,4,5,6,7,8,9,10};
Тогда если я задам
glVertexAttribPointer(0,1,GL_FLOAT,GL_FALSE,0,sizeof(float)*2);
то значения атрибута будут использоватся начиная со второго, а первые 2 значения я могу назанчить, например, на юниформы.

Все верно?

#18
3:37, 13 ноя. 2011

trex
> Все верно?
Help vamp, читай документацию и уроки по ссылке выше, там все разжевано как раз для вас.

#19
11:20, 13 ноя. 2011

trex
> но значение pointer воспринимается уже не как адрес в client-memory, а как
> адрес в буфере,
> причем этот адрес должен быть выражен в базовых машинных единицах.

это уже не адрес, а смещение - посмотри классический BUFFER_OFFSET макрос

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.