Je comprends donc comment utiliser un objet tampon de sommet et qu'il offre une forte augmentation de performances sur le dessin de mode immédiat. Je vais dessiner beaucoup de quads 2D (sprites), et je veux savoir si je suis censé créer un VBO pour chacun ou créer un VBO pour contenir toutes les données? P>
3 Réponses :
Utilisez un (ou un petit nombre de) VBO (s) pour contenir toutes / la plus de votre géométrie. P>
En règle générale, moins les appels d'API deviennent pour rendre votre scène, mieux c'est. P>
Vous ne devriez pas utiliser de nouveau VBO pour chaque Sprite / Quad. Donc, les mettre tous dans un seul VBO serait la meilleure solution dans votre cas. P>
Mais en général, je ne pense pas que cela puisse être répondu dans une phrase. P>
Créer un nouveau VBO pour chaque quad ne vous donnera pas une augmentation réelle des performances. Si vous le faites, beaucoup de temps sera gaspillé avec Petit Vbos: P>
Grand Vbos: P>
Les liens suivants peuvent vous aider: P>
GLBindbuffer code> pour commuter les VBO. Toutefois, si vous créez des VBO qui tiennent trop de données, vous pouvez rencontrer d'autres problèmes. P>
dessinateurs () code> appelez les meilleures performances. LI>
Cela dépend aussi de ce que vous voulez faire avec ces sprites? P>
sont-ils dynamiques? Voulez-vous ne changer que le centre de quad ou peut-être modifier les quatre points? P>
Ceci est important car si vos données sont dynamiques, alors, de la manière la plus simple, vous devrez transférer de la CPU en GPU chaque image. Peut-être que vous pourriez effectuer tout calcul sur le GPU - par exemple en utilisant Geometry Shaders? P>
Aussi pour des quads / sprites très simples, on peut utiliser GL_Point_sprite. Avec celui-là, il faut n'envoyer qu'un seul sommet pour un quad entier. Mais l'inconvénient est qu'il est difficile de le faire pivoter ... p>