Могу ли я использовать индексированные примитивы при использовании объектов буфера вершин в OpenGL ES 1.x? - PullRequest
1 голос
/ 06 ноября 2008

У меня есть массив, который содержит список вершин, которые я копирую в графический процессор, используя объект буфера вершин. Однако сами по себе координаты вершины не имеют смысла, так как у меня также есть целочисленный массив, который содержит список индексов в массиве вершин.

В этом сценарии можно создать еще один буферный объект для хранения индексов, а затем в функции визуализации связать массив вершин и массив индексов для рисования:

//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, который традиционно интерпретируется как указатель на память на стороне клиента, вместо этого интерпретируется как смещение в объекте буфера, измеренное в базовых единицах машины «.

Я довольно новичок в графическом программировании, поэтому прошу прощения, если что-то из этого не имеет смысла.

1 Ответ

2 голосов
/ 06 ноября 2008

Да, это возможно. Официальное руководство должно помочь вам в этом. Они рекомендуют не использовать байты без знака, придерживаться 16 или 32-битных индексов для скорости.

...