7
votes

Dessiner de nombreuses sphères dans OpenGL

Je veux dessiner de nombreuses sphères (~ 100k) à l'aide de OpenGL. Jusqu'à présent, je fais quelque chose comme xxx

avant d'utiliser des sphères appropriées, j'ai utilisé gl_points . Cela m'a permis d'appeler Gldrawarrays avec un tableau contenant tous les points qui étaient très efficaces. Y a-t-il une meilleure façon que le code ci-dessus pour dessiner de nombreux objets identiques?


3 commentaires

Comme Gregory Pakosz a mentionné, l'instanciation est le moyen standard de le faire. Cependant, je ne reçois vraiment pas ce que l'affaire réelle au monde nécessiterait ~ 100 000 sphères. Tout ce que je peux penser serait mieux servi avec des points ronds. Souhaitez-vous jeter une lumière sur votre cas d'utilisation?


Je simuler les anneaux de Saturne et je veux visualiser les résultats en temps réel. Le retour visuel de "profondeur" est vital et donc des points simples ne fonctionnent pas. Voir par exemple: Hanno-Rein.de/examplespheres.png et Hanno-Rein.de/examplepoint.png


Belle illustration. Vous pouvez simuler la sphère regarder en faisant l'éclairage dans un shader de pixel. Même l'application d'une texture de base vous aiderait déjà. Point étant, 100k Sphères est tenu de blesser Perf, tandis que les points ne seront pas autant (que vous avez déjà remarqué).


3 Réponses :


8
votes

Regardez sur cette page sur instantané : il contient beaucoup Références:


0 commentaires

3
votes

Si vous dessinez ~ 100k Sphères, vous voudrez peut-être envisager de les rayonner au lieu d'utiliser des mailles de polygone pour les approcher. Les papiers Coulée de rayonnage basée sur GPU de quadratique Surfaces par SIGG et al. (2006) et éclaboussures d'ellipsoïdes éclairés avec La correction de profondeur par gomme (2003) montre comment faire cela. Si vous faites cela, vous pouvez réutiliser une grande partie de votre code Fast Point Sprite.


0 commentaires

2
votes

Vous pouvez utiliser des sprites points et un shader de fragment pour dupliquer l'effet d'une sphère rendue sans la géométrie de la sphère réelle. Je voudrais essayer d'abord instancer, cependant.


0 commentaires