Контекст:
Вопрос:
Вот это VBO (буфер вершин), где каждая вершина состоит из позиции (3 GLfloat
) и цвета (3 GLfloat
) .
Здесьявляется представлением памяти VBO .
. В следующем представлении p1 обозначает положение вершины 1 , c1 обозначает цвет вершины 1 , p2 обозначает положение вершины 2 , c2 обозначает цвет вершины2 и т. Д.
VBO: [p1_x, p1_y, p1_z, c1_x, c1_y, c1_z, p2_x, p2_y, p2_z, c2_x, c2_y, c2_z, ...]
| |
| |
| |
start of vertex 1 start of vertex 2
Этот VBO связан с VAO .Атрибуты позиции и цвета объявлены следующим образом:
// Enable two attributes position and color
// Enable position attribute
id_position = glGetAttribLocation(id_program, "position");
glEnableVertexAttribArray(id_position);
glVertexAttribPointer(id_position ,
3,
GL_FLOAT,
GL_FALSE,
sizeof(GLfloat) * 3 + sizeof(GLfloat) * 3,
(uint8_t *)NULL);
// Enable color attribute
id_color = glGetAttribLocation(id_program, "color");
glVertexAttribPointer(id_color);
glVertexAttribPointer(id_color ,
3,
GL_FLOAT,
GL_FALSE,
sizeof(GLfloat) * 3 + sizeof(GLfloat) * 3,
(uint8_t *)NULL + (sizeof(t_vec3)));
Теперь возможно использовать индексный буфер IBO с этим VBO для того, чтобы каждыйиндекс относится к началу каждой вершины?
Позволяет ли использование нескольких атрибутов в одном VBO индексировать таким образом?
VBO: [p1_x, p1_y, p1_z, c1_x, c1_y, c1_z, p2_x, p2_y, p2_z, c2_x, c2_y, c2_z, ...]
| |
| |
| |
start of vertex 1 start of vertex 2
IBO: [0, 1, 3, 1, 0, 4, ...]
Я нашел пример IBO только с вершиной с одним компонентом позиции здесь .
Эта ссылка , кажется, связана с проблемой, но мне трудно понятьэто.