Question rapide: Quelle est la méthode la plus rapide pour rendre un large éventail de particules 4x4 / 8x8 en opengl? Actuellement, je dépense 2 triangles pour chacun, mais je pense que c'est lent, donc j'aimerais vraiment savoir si je le fais bien .....
opengl
graphics
software-engineering
user1010005
la source
la source
Réponses:
Vous pouvez dessiner des points avec OpenGL.
Vous souhaitez appeler glDrawArrays () ou glDrawElements () avec GL_POINTS (au lieu de GL_TRIANGLE_STRIP ou tout ce que vous utilisez.)
Cela attirera des points sur l'écran en fonction de la taille actuelle du point, que vous pouvez définir via glPointSize () . Vous pouvez également alias ces points, mais d'après mon expérience, tous les pilotes / matériels ne prennent pas en charge les points alias.
Vous ne pouvez pas texturer ces points; ils ne sont qu'une seule couleur.la source
Dans le noyau OpenGL 3.2 et supérieur, les shaders de géométrie sont disponibles pour utilisation. Pour donner un bref aperçu, vous diriez uniquement à OpenGL de dessiner les points qui représentent les positions de vos particules, et ces points passeraient normalement par le vertex shader, mais lorsqu'ils arriveront au géométrie shader, il construira le rectangle (sur de deux tris) en émettant des sommets à l'étape suivante du pipeline. Avec les sommets, vous pouvez générer par programme des normales et des coordonnées de texture.
Étant donné que tout cela se fait dans le matériel, je suis presque sûr que c'est le moyen le plus rapide en ce moment pour restituer des particules ponctuelles.
la source