2008-11-06 7 views
1

У меня есть массив, который содержит список вершин, которые я копирую на GPU, используя объект буфера вершин. Однако координаты вершин сами по себе бессмысленны, так как у меня также есть целочисленный массив, содержащий список индексов в массив вершин.Могу ли я использовать индексированные примитивы при использовании объектов-вершинных буферов в OpenGL ES 1.x?

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

//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); 

Я прочитал ИПН и следующий путать меня:
«В то время как ненулевой буферный объект привязан к цели GL_ELEMENT_ARRAY_BUFFER, параметр индексов glDrawElements, который традиционно интерпретируется как указатель на клиентскую память, вместо этого интерпретируется как смещение в пределах объекта буфера, измеренного в базовых машин ».

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

ответ

2

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

+0

Я не уверен, что 32-битный индекс возможен в ES. – WindRider 2013-07-27 18:05:59