Kurze Frage: Welches ist die schnellste Methode, um eine große Anzahl von 4x4 / 8x8-Partikeln in opengl zu rendern? Momentan gebe ich 2 Dreiecke für jedes aus, aber ich denke, dass es langsam ist, also würde ich wirklich gerne wissen, ob ich es richtig mache .....
opengl
graphics
software-engineering
user1010005
quelle
quelle
Antworten:
Mit OpenGL können Sie Punkte ziehen.
Sie möchten glDrawArrays () oder glDrawElements () mit GL_POINTS aufrufen (anstelle von GL_TRIANGLE_STRIP oder was auch immer Sie verwenden.)
Dadurch werden Punkte auf dem Bildschirm basierend auf der aktuellen Punktgröße gezeichnet , die Sie über glPointSize () festlegen können . Sie können diese Punkte auch als Alias verwenden, aber meiner Erfahrung nach unterstützen nicht alle Treiber / Hardware Alias-Punkte.
Sie können diese Punkte nicht texturieren. Sie sind nur eine einzige Farbe.quelle
In OpenGL 3.2 und höher stehen Geometrie-Shader zur Verfügung. Um einen kurzen Überblick zu geben, würden Sie OpenGL nur anweisen, die Punkte zu zeichnen, die die Positionen Ihrer Partikel darstellen. Diese Punkte werden normalerweise durch den Vertex-Shader geleitet. Wenn sie dann zum Geometrie-Shader gelangen, wird das Rechteck (out) erstellt von zwei Tris) durch Aussenden von Eckpunkten zur nächsten Stufe der Pipeline. Zusammen mit den Eckpunkten können Sie programmgesteuert Normalen und Texturkoordinaten generieren.
Da dies alles in Hardware erledigt wird, bin ich mir ziemlich sicher, dass es derzeit der schnellste Weg ist, Punkt-Sprite-Partikel zu rendern.
quelle