Эй. Я новичок в OpenGL ES, но у меня была своя доля опыта с обычным OpenGL. Мне сказали, что использование чересстрочных массивов для буферов вершин намного быстрее из-за оптимизации для избежания промахов в кеше.
Я разработал формат вершин, которые я буду использовать, что выглядит такOpengl Vertex атрибут шаг
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 (индекс, 3, GL_FLOAT, GL_FALSE, шаг, 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 (размер поплавка).
О, и еще одно, что дисплей просто пуст.
Может ли кто-нибудь помочь мне в этом?
Большое спасибо.
Я сказал, что 13 значений мышления я должен вычесть первые 3 (если у вас есть только x, y, z, то шаг равен 0); – Sanctus2099 2010-11-27 11:04:56