OpenGL ES на iOS Что настроить glVertexAttribPointer
У меня проблемы с настройкой моего кода OpenGL ES. Я вполне уверен, что моя проблема с кодами, где я установил glVertexAttribPointer. Вот как я вставляю вершины и индексы в их массивы:
NSArray *verts = [JSONDictionary objectForKey:@"vertices"];
GLfloat *vertices = malloc(sizeof(GLfloat) * [verts count]);
for (int i = 0; i < [verts count]; i++) {
double vert = [[verts objectAtIndex:i] doubleValue];
vertices[i] = vert;
}
verticesBuff = vertices;
NSArray *indexArray = [JSONDictionary objectForKey:@"faces"];
GLuint *indices = malloc(sizeof(GLuint) * [indexArray count]);
for (int i = 0; i < [indexArray count]; i++) {
double index = [[indexArray objectAtIndex:i] doubleValue];
indices[i] = index;
}
indicesBuff = indices;
И тогда вот как я буферизирую свои данные:
glGenVertexArraysOES(1, &_vertexArray);
glBindVertexArrayOES(_vertexArray);
glGenBuffers(1, &_vertexBuffer);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBuffer);
glBufferData(GL_ARRAY_BUFFER, vertCount, verticesBuff, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, vertCount, verticesBuff);
glEnableVertexAttribArray(GLKVertexAttribPosition);
glVertexAttribPointer(GLKVertexAttribPosition, 3, GL_FLOAT, GL_FALSE, 12, BUFFER_OFFSET(0));
glEnableVertexAttribArray(GLKVertexAttribNormal);
glVertexAttribPointer(GLKVertexAttribNormal, 3, GL_FLOAT, GL_FALSE, 12, BUFFER_OFFSET(12));
glGenBuffers(1, &_indexBuffer);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, _indexBuffer);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, indexCount, indicesBuff, GL_STATIC_DRAW);
glBufferSubData(GL_ELEMENT_ARRAY_BUFFER, 0, indexCount, indicesBuff);
glBindVertexArrayOES(0);
Этот код отображает вещи в общем виде файла, который я разрабатываю, но в нем много выступающих треугольников и пропущенных областей. Я подозреваю, что проблема в том, где я установил glEnableVertexAttribArray, но я не смог понять, как его установить, чтобы мои данные загружались правильно даже после просмотра спецификации.
Если бы кто-нибудь мог сказать мне, как бы я был полон.
Это файл ThreeJS, который я пытаюсь загрузить для тестирования: http://thingiverse-production.s3.amazonaws.com/threejs_json/8c/13/d8/2b/76/ca83d33d20mmTestCube_repaired.js