Registriert: Di Apr 29, 2008 18:56 Beiträge: 1213
Programmiersprache: Delphi/FPC
HI,
ich hab in meinem Programm mehrere Objekte, die an sich immer gleich bleiben und bloß an verschiedenen Orten gezeichnet werden. Zurzeit hab ich die ganzen Vertex in einem Array abgespeichert und zeichne das dann indem ich mit einer Schleife die Daten aus dem Array an die Graka/OpenGL übergeb.
Da dass ja nich grad schnell is, wollte ich dass jetzt etwas umschreiben und bin auf Listen und VBOs gestoßen. Die Frage ist nun, was für mich sinnvoller/einfacher ist?!
Listen sind einfacher, aber VBOs in deinem Fall auch nicht wirklich komplizierter.
Von der Performance her dürfte es keinen Unterschied machen, ob du Listen oder VBOs einsetzt. Wenn du VBOs machst, machst du gleich das, was später sehr wichtig werden wird und wenn du Displaylisten nutzt, erweiterst du halt deinen Horizont um eine OpenGL-Funktion - auch wenn du sie früher oder später "über Bord" werfen musst.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
VBOs sollten hier das Mittel der Wahl sein. Diese sind einfach flexibler als Displaylisten und auch nicht komplizierter als z.B. das manuelle Laden einer Textur.
Darüberhinaus kannst du das ganze später irgendwann mal um Instancing erweitern. Aber da dies das Einsteiger-Forum ist, ignoriere einfach den letzten Satz
Im übrigen habe ich heute Eindrucksvoll gemerkt, dass der Treiber intern EH mit VBOs arbeitet. Der hat mir nämlich nen VBO-Fehler um die Ohren geschmissen, als ich eine Displayliste zeichnen wollte, zu deren Erstellung ich Speicher nutzte, der nicht der meinige ist.
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ziz: Richtig. Dieses Verhalten vom Treiber kann sich auch negativ auf die Performance auswirken. Kleinst DisplayListen sollten seit dem vermieden werden, da beim Zeichnen halt intern immer erst einmal ein VBO gebunden und eingestellt werden muss. Das dauert natürlich etwas Zeit. Was mitunter zu einem stattlichen Sümmchen werden kann.
Aber ein Programm "aus der Zeit" des Displaylisten bzw. deren Hauptanwendungszeit dürfte ja trotzdem in der Summe immernoch schneller bzw. mindestens gleich schnell laufen auf neuer Hardware, die Displaylisten nurnoch "emuliert", oder?
_________________ Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut. Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’. Und du schaust mich an und fragst ob ich das kann. Und ich denk, ich werd' mich ändern irgendwann. _________________Farin Urlaub - Bewegungslos
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Ziz hat geschrieben:
Aber ein Programm "aus der Zeit" des Displaylisten bzw. deren Hauptanwendungszeit dürfte ja trotzdem in der Summe immernoch schneller bzw. mindestens gleich schnell laufen auf neuer Hardware, die Displaylisten nurnoch "emuliert", oder?
Du kannst wieder fragen Stellen. Auf der einen Seite ist die Hardware natürlich schneller aber auf der anderen Seite wird bei Kleinstlisten der Overhead auch entsprechend größer. Um mal ein Beispiel zu nennen was ich eigentlich meine. Bei meinen Fonts hatte ich das testweise mal so gemacht, dass ich die Quads auf denen die Zeichen dargestellt werden jeweils in eine eigene DisplayListe gelandet sind. Das Zeichnen der Texte war dann im Vergleich zum Imediate Mode deutlich langsamer. Und das obwohl eigentlich eine Technik benutzt wird die es schneller machen sollte.
Ich denke mit der Benutzung von VBOs hätte man da schon etwas mehr rausholen können. Denn der Entwickler selber weiß ja wie er es verwenden will. Der Treiber kann in dem Fall nicht mal raten. So hätte ich zum Beispiel alles in ein VBO packen können und hätte nur Auszüge daraus gezeichnet. Ohne, dass das VBO neu gebunden und eingestellt werden muss. Damit hat man mit VBOs deutlich mehr Einflussmöglichkeiten um die Verwendung gezielter steuern zu können.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.