Entschuldigung, ich wollte Ihrem Fragethread einen Kommentar hinzufügen, habe aber festgestellt, dass ich zu viel ausgearbeitet habe. Meine Entwicklungserfahrung ist aus einer DX 11-Perspektive, daher kann ein Teil davon in OpenGL nicht zutreffen
Die Speicherlokalität der Daten spielt sicherlich eine große Rolle. Aber es gibt noch ein paar andere Elemente, die dazu beitragen, die Breite der Daten, wie Sie wissen. Ich hatte ein paar GPUs und hatte aufgrund einiger Wendepunkte einen starken Leistungseinbruch bei einigen. Wenn ich mich recht erinnere, könnten Sie auf meinem alten AMD r290 im Grunde genommen bis zu 4 float4s ohne zusätzliche Kosten über 1 an den Vertex-Puffer weiterleiten. Sobald ich jedoch> 4 gepostet habe, gab es einen messbaren Abfall (im Frame) Bewertung). Dies ist nur aus meiner Erinnerung und so anekdotisch wie am besten. Die GPU-Architektur ändert sich jedoch ständig, und welche Nischentechniken, die Ihnen heute einen Leistungsvorteil verschaffen, sind möglicherweise der Fluch Ihrer Leistung von morgen. ICH'
Trotzdem haben Sie die Frage nach der Reihenfolge der Eckpunkte gestellt, und das wird sicherlich nur geringfügig helfen. Der Leistungsgewinn ergibt sich aus der Kombination mit Indexpuffern, mit denen die Hardware bereits berechnete Scheitelpunkte optimieren und zwischenspeichern kann. Sie können sicherlich noch mehr Gewinne aus Dreiecksstreifen usw. erzielen, die speziell nach Ihren Gedanken bestellt wurden. Das meiste Modell-Rendering, das ich mache, sind indizier- / vertexbasierte optimierte Modelle mit Instanzen. Ich verwende eine kleine Anzahl von Suchvorgängen für zyklische Bewegungseffekte (z. B. Äste). In diesen Fällen sucht der gesamte Ast des Baums nach demselben Wert. So kann auch hier das Caching genutzt werden.
Alles, was ich zusammenfassend von mir selbst sagen kann, ist:
- Versuchen Sie, die Optimierung zu Beginn nicht zu überdenken, während Sie Ihr Spiel / Ihre Anwendung noch entwickeln, und versuchen Sie nicht, sie vorzeitig zu optimieren. Wenn Sie zurückkehren und neue Funktionen hinzufügen müssen, verlieren Sie möglicherweise den gesamten Aufwand. Sie haben meine Gewohnheit vielleicht> <, lieben es zu versuchen, die beste Leistung und Techniken zu bekommen
- Die GPU-Architekturen sind unterschiedlich und die Stärken der einen können Schwächen der anderen widerspiegeln. AMD und Nvidia sind dafür bekannt, Entwickler dazu zu bringen, Spiele an ihre Architektur anzupassen. Aus einem Grund hat jeder Vor- / Nachteile. Wenn Sie den Mittelweg für die Entwicklung einschlagen, ist dies möglicherweise der beste Ort. Verwenden Sie keine auf Hardwareherstellern basierenden Funktionen (Meinung hier). (Hinzu kommt, dass einige gepackte Formate nur in AMD existieren).
Dies sind nur einige Gedanken und Erfahrungen, die ich gemacht habe. Es gibt viele Bücher, die Sie genau zu diesen Themen in die Hände bekommen sollten. Ich habe nicht gesehen, dass viele vorschreiben, was Sie vorschlagen, aber das bedeutet nicht, dass es falsch ist. Viel Glück.