Quiero dibujar muchas esferas (~ 100k) usando OpenGL. Hasta el momento, estoy haciendo algo comoDibujando muchas esferas en OpenGL
for (int i=0; i<pnum; i++){
glPushMatrix();
glTranslatef(bpos[i].x, bpos[i].y, bpos[i].z);
glCallList(DListSPHERE);
glPopMatrix();
}
Antes de usar esferas adecuadas, solía GL_POINTS
. Eso me permitió llamar al glDrawArrays
con una matriz que contiene todos los puntos que fue muy eficiente. ¿Hay alguna manera mejor que el código anterior para dibujar muchos objetos idénticos?
como mencionó Gregory Pakosz, la creación de instancias es la forma estándar de hacerlo. Sin embargo, realmente no estoy obteniendo lo que el caso del mundo real requeriría ~ 100K esferas. Todas las cosas en las que puedo pensar serían mejor atendidas con puntos redondos. ¿Te importa arrojar algo de luz sobre tu caso de uso? – Bahbar
Simulo los anillos de Saturno y quiero visualizar los resultados en tiempo real. La retroalimentación visual de "profundidad" es vital y, por lo tanto, los puntos simples no funcionan. Ver por ejemplo: http://hanno-rein.de/examplespheres.png y http://hanno-rein.de/examplepoints.png – hanno
Bonita ilustración. Puede simular el aspecto de la esfera haciendo la iluminación en un sombreador de píxeles. Incluso el solo hecho de aplicar una textura básica ya te ayudaría allí. Siendo un punto, 100K esferas están destinadas a perjudicar el rendimiento, mientras que los puntos no lo son tanto (como ya habrás notado). – Bahbar