Beste Performance beim Render [OpenGL]
-
Also ich hätte folgendes Problem:
Ich suche die beste Methode in OpenGl Modelle zu rendern mit möglichst hoher Performance... In Moment verwende ich für statische Modelle Display Lists. Jedes Modell in einer wobei man im Modellformat auch für ein Modell mehrere Display List definieren kann die dann von einer "Haupt-Display List" aufgerufen wird. (Wenn man teile öfters braucht...) Jetzt will ich mal fragen ist das auch der beste weg? Vorallem stellt sich dann für mich noch die frage was ist am schnellsten wenn die DL nicht im VRam gehalten werden kann? Kann ich sie dann trotzdem in der DL lassen da es sowieso nicht besser geht oder gibt es da ne bessere Methode (außer andere wieder entladen..) ?
[Edit:]
Fast hätte ich an dem Punkt vergessen dass ich auch noch ein was für meine Statischen Modelle geplant habe:
Ich will auch noch für jedes Modell bis zu 3 "mipmaps" sag ich mal machen; also modelle mit weniger Polygonen die aber aus der ferne noch gut wirken. Das sollte die Framerate noch ein wenig pushen... also würd ich dann für statische Modelle bis zu 3 DL anlegen jeweils. Gute Idee oder besser anders machen?Tja es kommt aber noch dicker... Ich hab natürlich auch an animierte Modelle gedacht und hätte da ne DL intensive Idee nur weiß ich nicht ob sie wirklich so klug ist und ob es da nicht wieder mal eine bessere Methode gibt (Ich denke an Vertex-Buffer-Objects...) Wenn allerdings meine Methode genauso schnell ist würde ich nämlich gerne auf diese Extension verzichten (Es sei denn es ist besser und/oder ihr meint das ich dies Extension mit ruhigem Gewissen verwenden kann.)
Also meine Methode:
Ich dachte mir man könnte für jeden beweglichen teil ne DL machen und diese dann eben animieren also immer vom Root Node runter zu bis zum letzten child Node... na ihr wisst schon wie ich das mein... Und halt immer jeden mit der WORLD Matrix Drehen und verschieben und dann entsprechende DL aufrufen... Gute Idee oder eher schlecht? Denn irgendwie kann ich mir selbst nicht gut vorstellen das die vielen Transformationen der World Matrix sehr schnell sind. Wie gesagt mir ist vorallem die Performance wichtig denn ich hätte gern dass das auf sehr vielen Systemen gute Ergebnisse bringt. Mann soll nicht umbedingt den allerbesten extrem-High-End Rechner brauchen um halbwegs gute flüßige Ergebnisse auf dem Bildschirm zu haben... (Ja ich hatte recht lange nen laptop mit sis on-board-grafikchip und shared memory...)Nagut hoffe das mir da wer helfen kann die beste Methode zu schreiben!
cu Manuelh87
-
Manuelh87 schrieb:
Ich hab natürlich auch an animierte Modelle gedacht und hätte da ne DL intensive Idee nur weiß ich nicht ob sie wirklich so klug ist und ob es da nicht wieder mal eine bessere Methode gibt (Ich denke an Vertex-Buffer-Objects...) Wenn allerdings meine Methode genauso schnell ist würde ich nämlich gerne auf diese Extension verzichten (Es sei denn es ist besser und/oder ihr meint das ich dies Extension mit ruhigem Gewissen verwenden kann.)
Vertex-Buffer-Objects sind nur mit Extension zu haben. Auf jedenfall kannst du es doch als Option anbieten, wenn die Extension vorhanden ist. List dir dazu mal das NeHe Tutorial durch, wenn dus nicht schon getan hast.
-
Manuelh87 schrieb:
Also ich hätte folgendes Problem:
Ich suche die beste Methode in OpenGl Modelle zu rendern mit möglichst hoher Performance... In Moment verwende ich für statische Modelle Display Lists. Jedes Modell in einer wobei man im Modellformat auch für ein Modell mehrere Display List definieren kann die dann von einer "Haupt-Display List" aufgerufen wird. (Wenn man teile öfters braucht...) Jetzt will ich mal fragen ist das auch der beste weg? Vorallem stellt sich dann für mich noch die frage was ist am schnellsten wenn die DL nicht im VRam gehalten werden kann? Kann ich sie dann trotzdem in der DL lassen da es sowieso nicht besser geht oder gibt es da ne bessere Methode (außer andere wieder entladen..) ?
Das kommt ganz auf den Treiber an.. Mal ist VBO schneller mal DL..
Ich fahre mit Linux/nvidia am besten mit:
statische Modelle -> DisplayList
dynamische Modelle (Geometrie wird von CPU bei jedem Frame verändert) -> Vertex Array
-
Ja läuft wahrscheinlich eh auf folgendes hinaus:
Statische Modelle biete ich beides an und dynamische Modelle werd ich mit vertex array umsetzen sprich unter verwendung von VBO's und naja k.a. aber vielleicht mach ich dann auch noch als alternative zu dynamischen Modellen mit VBO dynamische Modelle mit DL...
Naja vorerst werd ich mal überlegen wie ich jetzt das statische und das dynamische Format aufbau. Hab ja in Moment ein statisches Format aber das ist glaub ich nicht so günstig... Naja mal sehn ob das noch was wird.
Danke mal für eure Hilfe
cu Manuelh87