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

StackOverflow https://stackoverflow.com/questions/268035

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top