У меня есть массив, который содержит список вершин, которые я копирую в графический процессор, используя объект буфера вершин. Однако сами по себе координаты вершины не имеют смысла, так как у меня также есть целочисленный массив, который содержит список индексов в массиве вершин.
В этом сценарии можно создать еще один буферный объект для хранения индексов, а затем в функции визуализации связать массив вершин и массив индексов для рисования:
//vertex coordinates
glBindBuffer(GL_ARRAY_BUFFER, bufferId1);
//index coordinates
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, bufferId2);
glVertexPointer(3, GL_FLOAT, 0, 0);
//Not sure if this should be Unsigned BYTE or Unsigned SHORT
glDrawElements(GL_POINTS, 6, GL_UNSIGNED_BYTE, 0);
Я прочитал API, и меня смутило следующее:
"Хотя ненулевой объект буфера привязан к цели GL_ELEMENT_ARRAY_BUFFER, параметр индексов glDrawElements, который традиционно интерпретируется как указатель на память на стороне клиента, вместо этого интерпретируется как смещение в объекте буфера, измеренное в базовых единицах машины «.
Я довольно новичок в графическом программировании, поэтому прошу прощения, если что-то из этого не имеет смысла.