Эй.
Я новичок в OpenGL ES, но у меня был свой опыт работы с обычным OpenGL.
Мне сказали, что использование чересстрочных массивов для буферов вершин намного быстрее из-за оптимизации для избежания промахов кэша.
Я разработал формат вершин, который я буду использовать, который выглядит следующим образом
struct SVertex
{
float x,y,z;
float nx,ny,nz;
float tx,ty,tz;
float bx,by,bz;
float tu1,tv1;
float tu2,tv2;
};
Затем я использовал «glVertexAttribPointer (index, 3, GL_FLOAT, GL_FALSE, stride, v);» указать на массив вершин. Индекс является одним из атрибутов, которые я хочу использовать, и все остальное в порядке, кроме шага. Это сработало, прежде чем я решил добавить это в уравнение. Я прошел шаг как sizeof (SVertex) и как 13 * 4, но ни один из них, похоже, не работает.
Если это имеет какое-то значение, я рисую такие примитивы
glDrawElements(GL_TRIANGLES,surface->GetIndexCount()/3,GL_UNSIGNED_INT,surface->IndPtr());
В спецификациях OpenGL написано, что шаг должен быть размером в байтах от конца атрибута (в данном случае z) до следующего атрибута того же вида (в данном случае x). Так что по моим расчетам это должно быть 13 (nx, ny, nz, tx, ty .... tuv2, tv2) умножить на 4 (размер с плавающей точкой).
Ох, и еще одна вещь, что дисплей просто пуст.
Может ли кто-нибудь помочь мне с этим?
Большое спасибо.