Triangles zu Trianglestrip zusammenfassen sinnvoll



  • Annahme ist ein fragmentshaderlastiges Rendern durch Per-Pixel-Lightning. Ich verwende OpenGL.
    Wie groß ist in etwa der Performancegewinn durch Trianglestrips statt einzelnen Dreiecken?



  • Probiers aus. 😉
    Ich vermute allerdings, dass es nicht viel bringen wird, denn auch wenn du für ein Quadrat dann nur noch 4 statt 6 vertex indices benötigst, die Anzahl der zu shadenden fragments dadurch ja nicht runtergeht.



  • Er benutzt ja Dreiecke, da sinds statt 3 nur 1 Vertex.
    Man kann auch die Vertexe vorher im Array übergeben, dann spart man sich das komplett. Geht natürlich nur bei statischen Objekten.



  • Das Quadrat sollte ja nur ein Beispiel für den Unterschied zwischen GL_TRIANGLES und GL_TRIANGLE_STRIP sein, damit man sich vorstellen kann, dass der fragment shader trotzdem noch genauso häufig ran muss. 😉



  • Der Performancegewinn für den Pixelshader ist genau 0, weil genau so viele Pixel gezeichnet werden. Der Vertexshader muss halt seltener ran.


  • Mod

    in einem unified shader system (und das haben alle GPUs heutzutage bis auf Tegra), wird jeder ersparnis im vertex processing ein wenig rechenzeit fuers fragment processing freigeben, kann also theoretisch etwas bringen.

    jedoch wuerde ich zu indexed triangles raten, das duerfte auf jeder GPU (bis auf PSP1 :P) das schnellste sein.
    es gibt optimierungs tools die dir die indices optimal anlegen.

    jedoch erwarte nicht viel, falls du wenig polys hast. wenn du 1000 vertices transformierst und 1Mio pixel shadest, sind das 0.1% und die zu optimieren wird dir vermutlich weit weniger bringen als im fragment shader eine instruktion einzusparen, deswegen wuerde ich an deiner stelle dort ansetzen.



  • Hängt davon ab was du rendern willst...



  • Danke für die Antworten

    Werde mir das Thema trotzdem auf die Warteliste setzen, weil mir ein anderer Vorteil eingefallen ist, nämlich dass ich damit Speicher sparen kann


Anmelden zum Antworten