Estoy tratando de dibujar objetos en 3D que tengan más de 65536 vértices en el iPad, pero no puedo entender lo que estoy haciendo mal. Mi modelo original que usó GL_UNSIGNED_SHORT funcionó bien, pero ahora con GL_UNSIGNED_INT, no puedo hacer que aparezca nada con el comando glDrawElements. Es como si el renderizador estuviera ignorando por completo mi línea glDrawElements. La parte de mi bucle de renderizado que estoy haciendo referencia es a continuación:¿Cómo se usa glDrawElements con GL_UNSIGNED_INT para los índices?
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_NORMAL_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
glNormalPointer(GL_FLOAT, sizeof(assemblyObj->vertices[0])*6, &assemblyObj->vertices[0]);
for (int i = 0; i < assemblyObj->numObjects; i++)
{
glDrawElements(GL_TRIANGLES, assemblyObj->partList[i].faceArray.size(), GL_UNSIGNED_INT, &assemblyObj->partList[i].faceArray[0]);
}
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
vértices se define como:
vector<float> vertices;
y cada faceArray se define como:
vector<UInt32> faceArray;
alguna sugerencia sobre ¿Qué estoy haciendo mal que impide que se dibuje mi geometría?
¿Es esto más rápido que dibujar con glDrawArrays? Puedo hacer lo mismo que hago ahora con glDrawArrays, pero quiero renderizar a tantos FPS como sea posible. – Davido
Lo descubrí, simplemente renderizo cada objeto usando su propia matriz de vértices y funciona muy bien. Estoy renderizando alrededor de 125,000 vértices con un total de 90 modelos y es utilizable, rinde aproximadamente 12 fotogramas por segundo. Ahora solo estoy tratando de averiguar si hay algo que pueda hacer para acelerar la renderización. ¿Alguna sugerencia? – Davido
Esta respuesta es incorrecta, 'gl_UNSIGNED_INT' es compatible con' glDrawElements' si se implementa 'GL_OES_element_index_uint' (que está en iOS, de acuerdo con). –