Je veux dessiner de nombreuses sphères (~ 100k) à l'aide de OpenGL. Jusqu'à présent, je fais quelque chose comme avant d'utiliser des sphères appropriées, j'ai utilisé gl_points code>. Cela m'a permis d'appeler
Gldrawarrays code> 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? P> p>
3 Réponses :
Regardez sur cette page sur instantané : il contient beaucoup Références: P>
Un test effectué qui montre quand utiliser instantané et quand non: http://www.ozone3d.net/blogs/lab/?p=87 p> li>
Une implémentation OpenGL d'un instantané pséduo (recommandé pour l'ancien matériel).
GLSL_PSEUDO_INSTAND.PDF A > p> li>
OpenGL Instancement:
http://www.opengl.org/registry/specs/ext/Draw_insanced. txt p> li>
ul>
Voir aussi Instancement de géométrie sur Wikipedia . P>
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. P>
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. P>
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é).