J'essaye de dessiner des objets 3D qui ont plus de 65536 vertices sur l'iPad, mais je n'arrive pas à comprendre ce que je fais de mal. Mon modèle d'origine qui utilisait GL_UNSIGNED_SHORT fonctionnait très bien, mais maintenant avec GL_UNSIGNED_INT, je n'arrive à rien avec la commande glDrawElements. C'est comme si le rendu ignorait complètement ma ligne glDrawElements. La partie de ma boucle de rendu que je fais référence est ci-dessous:Comment utilisez-vous glDrawElements avec GL_UNSIGNED_INT pour les indices?
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);
sommets est défini comme:
vector<float> vertices;
et chaque faceArray est défini comme:
vector<UInt32> faceArray;
Toutes les suggestions sur qu'est-ce que je fais de mal qui empêche ma géométrie de dessiner?
Est-ce que cela est plus rapide que de dessiner avec glDrawArrays? Je peux faire la même chose que je fais maintenant avec glDrawArrays, mais je veux rendre le plus de FPS possible. – Davido
Je l'ai compris, je rends juste chaque objet en utilisant son propre tableau de vertex et ça fonctionne très bien. Je rends environ 125.000 sommets avec un total de 90 modèles et il est utilisable, rend environ 12 images par seconde. Maintenant, j'essaie juste de comprendre s'il y a quelque chose que je peux faire pour accélérer le rendu. Aucune suggestion? – Davido
Cette réponse est incorrecte, 'GL_UNSIGNED_INT' est supporté pour' glDrawElements' si 'GL_OES_element_index_uint' est implémenté (ce qui est dans iOS, d'après). –