Sto provando a disegnare oggetti 3d che hanno più di 65536 vertici sull'iPad, ma non riesco a capire cosa sto facendo male. Il mio modello originale che utilizzava GL_UNSIGNED_SHORT funzionava bene, ma ora con GL_UNSIGNED_INT, non riesco a ottenere nulla da mostrare usando il comando glDrawElements. È come se il renderer ignorasse completamente la mia linea glDrawElements. La parte del mio ciclo di rendering che sto riferimento è qui sotto:Come usi glDrawElements con GL_UNSIGNED_INT per gli indici?
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);
vertici è definito come:
vector<float> vertices;
e ogni faceArray è definito come:
vector<UInt32> faceArray;
qualche suggerimento su cosa sto facendo male che sta impedendo alla mia geometria di disegnare?
Lo fa più veloce del disegno con glDrawArrays? Posso fare la stessa cosa che sto facendo ora con glDrawArrays, ma voglio renderizzare il maggior numero possibile di FPS. – Davido
L'ho capito, ho solo renderizzato ogni oggetto usando il proprio array di vertici e funziona perfettamente. Sto rendendo circa 125.000 vertici con un totale di 90 modelli ed è utilizzabile, rende circa 12 fotogrammi al secondo. Ora sto solo cercando di capire se c'è qualcosa che posso fare per accelerare il rendering. Eventuali suggerimenti? – Davido
Questa risposta non è corretta, 'GL_UNSIGNED_INT' è supportato per' glDrawElements' se 'GL_OES_element_index_uint' è implementato (che è in iOS, secondo). –