Desidero disegnare molte sfere (~ 100k) utilizzando OpenGL. Finora, sto facendo qualcosa di simile aDisegno di molte sfere in OpenGL
for (int i=0; i<pnum; i++){
glPushMatrix();
glTranslatef(bpos[i].x, bpos[i].y, bpos[i].z);
glCallList(DListSPHERE);
glPopMatrix();
}
Prima di usare le sfere appropriate, ho usato GL_POINTS
. Ciò mi ha permesso di chiamare glDrawArrays
con un array contenente tutti i punti che era molto efficiente. C'è un modo migliore rispetto al codice precedente per disegnare molti oggetti identici?
come menzionato da Gregory Pakosz, l'istanza è il modo standard per farlo. Tuttavia, in realtà non sto ottenendo quello che il caso reale richiederebbe ~ 100.000 sfere. Tutto ciò che posso pensare sarebbe meglio servire con punti rotondi. Ti va di far luce sul tuo caso d'uso? – Bahbar
Simulo gli anelli di Saturno e voglio visualizzare i risultati in tempo reale. Il feedback visivo di "profondità" è vitale e quindi i punti semplici non funzionano. Vedi per esempio: http://hanno-rein.de/examplespheres.png e http://hanno-rein.de/examplepoints.png – hanno
Bella illustrazione. Puoi simulare l'aspetto della sfera facendo l'illuminazione in un pixel shader. Anche solo l'applicazione di una texture di base potrebbe aiutarti già. Essendo il punto, le sfere 100K sono destinate a ferire perf, mentre i punti non lo fanno (come già notato). – Bahbar