Performance-Optimierung?


  • Mod

    Thilo87 schrieb:

    ... Ich denke, die allermeiste Zeit braucht ...

    ein gutes profiling tool ist sehr viel mehr wert als voodoo. lass die entsprechenden fuer cpu und gpu laufen und sag uns was wirklich limitiert.



  • Naja, in dem Beispiel isses wohl ziemlich offensichtlich, dass es die 30000 Draw Calls pro Frame sind 😉


  • Mod

    dot schrieb:

    Naja, in dem Beispiel isses wohl ziemlich offensichtlich, dass es die 30000 Draw Calls pro Frame sind 😉

    jo, steht da:

    for (int i = 0; i < 30000; ++i) {
    

    hatte ich vor kurzem in einem anderen forum genau so gesehen, scheinbar hatte ihm ein held empfohlen instancing zu implementieren, wurde aber garnicht schneller, oh wunder, er steht in mitten der boxen und zeichnet sie mit transparenz, komplett ROP bound.

    engineers profilen, priester glauben. 😉



  • Okay, ihr redet Chinesisch für mich. Aber ich werde mich mal mit Shadern auseinandersetzen, bin ja noch OpenGL-Anfänger 😉 Danke



  • Ich denk du könntest die Performance schon wesentlich verbessern, wenn du nur nicht jeden Würfel einzeln zeichnen würdest, sondern alle Würfel auf einmal. Also z.B. eben nicht pro Würfel glutSolidCube() aufrufen, sondern die Würfel selber malen und die Schleife dazu zwischen glBegin() und glEnd() packen und nicht glBegin() glEnd() in die Schleife...


  • Mod

    oder aber auch alles in eine renderlist compilieren und die dann nur immer ausfuehren lassen. ist 5min arbeit.

    [edit] dennoch empfehle ich zu profilen!



  • oder aber auch alles in eine renderlist compilieren und die dann nur immer ausfuehren lassen. ist 5min arbeit.

    Aber die Würfel bekommen im Laufe des Programmes verschiedene Positionen. Da müsste ich doch die Liste dann immer wieder von neuem compilieren, das wäre doch im Endeffekt derselbe aufwand, oder?



  • Thilo87 schrieb:

    Aber die Würfel bekommen im Laufe des Programmes verschiedene Positionen.

    In dem Fall schau einfach mal, was du rausholen kannst, wenn du die Schleifen umbaust, wie ich oben gesagt hab. Eine Displaylist bringt natürlich vor allem was bei statischen Daten...



  • wieso berechnest du eigentlich die richtung usw. in der zeichenfunktion oO



  • Schmeiß das uralt OpenGL auf den Müll, nimm Shader, implementiere rudimentäres Instancing und hab Spaß mit deinen 25k Würfeln.


  • Mod

    Thilo87 schrieb:

    oder aber auch alles in eine renderlist compilieren und die dann nur immer ausfuehren lassen. ist 5min arbeit.

    Aber die Würfel bekommen im Laufe des Programmes verschiedene Positionen. Da müsste ich doch die Liste dann immer wieder von neuem compilieren, das wäre doch im Endeffekt derselbe aufwand, oder?

    wie oft? wenn du einmal pro minute die liste generierst, bist du im schnitt vermutlich mit mehr fps unterwegs, als wenn du z.b. instanzing benutzt.

    aber wie gesagt, am ende sagt nur ein profiling tool wo das problem liegt, und dann kann man nach der richtigen optimierung greifen.


Anmelden zum Antworten