Wenige Texturwechsel



  • Hallo.
    Möchte mal wissen, wie ihr die Anzahl an Texturwechseln möglichst niedrig haltet.
    Speichert ihr dazu die Information, welche Polygone die gleiche Textur haben, in der Textur ab (wie Q2) ?
    Oder ganz anders?
    Danke.



  • Bau dir doch einen Render Manager an den du die zu rendernden Daten
    schickst, sortierst und anschließend renderst.



  • Hm. Ich denke der Frager will wissen wie das Leute gemacht haben die sowas selbst schon gemacht haben - zumindest interpretiere ich es so.

    Ansonsten... wenns nur um "wie könnte man es machen" geht...:
    1)
    Jedes Mesh hat die Polygone nach Textur gruppiert
    Beim Wechsel von "unsichtbar" auf "sichtbar" ("nicht rendern" auf "rendern") wird jedes Mesh an einen "Manager" übergeben, der sich pro Textur merkt welche TriLists/TriStrips von welchem Mesh zu rendern sind.
    Dann muss man nicht in jedem Frame neu sortieren, sondern muss nurnoch die Datenstruktur des "Managers" durchwandern um sortiert zu rendern.
    Natürlich müssen Teile mit Alpha-Blending als solche geflaggt werden, damit diese unabhängig von der Textur front-to-back oder back-to-front gerendert werden können.

    Man verzichtet auf sowas kompliziertes und sagt sich einfach "es wird schon nicht so viel verschiedene Meshes geben", und sortiert die Objekte nur nach dem verwendeten Mesh. Die Meshes sind dann in sich nach Textur "vorsortiert".
    Das Rendern ist dann ca. so:

    for all meshes m (that are used by currently visible objects)
       for all textures t that mesh m uses
          select texture t
          for all objects o that use mesh m
             render all tri lists/strips of m that use texture t, transformed according to o
          end
       end
    end
    


  • Danke.
    Ich denk ich machs dann wie in 1.


Anmelden zum Antworten