Objekte sortieren



  • Wie würdet ihr vorgehen wenn ihr Objekte einer 3D Welt sortieren müsst?

    Ich habe mir mal ein paar Gedanken dazu gemacht.

    VERTEXBUFFER_1            VERTEXBUFFER_2
            |                        |
            |                        |
           / \                      /
          /   \                    /
    TEXTUR_A  TEXTUR_B         TEXTUR_A
       |        |                |
       |        |                |
    Rendern   Rendern         Rendern
    

    Erklärung:
    - Vertexbuffer setzen
    - Textur setzen und Objekt Rendern
    - zweite Textur setzten und Objekt mit aktuellem Vertexbuffer rendern.
    - Zweiten Vertexbuffer setzen
    - Textur A wieder setzen und rendern.

    Eine andere Möglichkeit ist:

    TEXTUR_A
                  |
                  |
                 / \
                /   \
    VERTEXBUFFER_1  VERTEXBUFFER_2
               |           |
               |           |
            Rendern        |
                           |
                         Rendern
    ___________________________________
    
              TEXTUR_B
                  |
                  |
             VERTEXBUFFER_1
                  |
                  |
               Rendern
    

    Erklärung:
    - Textur A setzen
    - Vertexbuffer setzen und Objekt rendern
    - zweiten Vertexbuffer setzen und Objekt mit aktueller Textur rendern.
    - Danach die zweite Textur setzen und den Vertexbuffer 1 noch mal aktivieren und rendern.

    Das ganze soll automatisch ablaufen und bildet den Kern einer DirectX9 basierenden 3D Engine. Ziel soll es sein unnötiges setzen von Texturen und Vertexbuffern zu vermeiden. Doch wenn man die Möglichkeiten anschaut sieht man das es bei beiden Varianten Stellen gibt an dennen die selbe Textur oder der selbe Vertexbuffer zweimal gesetzt wird.

    Was haltet ihr davon und was würdet ihr evt. anders machen?



  • Das hängt wahrschenlich von der Größe der Texturen und Vertexbuffer ab und wo diese gespeichert sind. Dummerweise wird man dazu wohl auch nicht so einfach einen repräsentativen Bench schreiben können. Ich würde höchstens noch vermuten, das wenn aus VB_1 verschiedene Punkten gebraucht werden, bei den beiden Aufrufen, dann ist das zweite besser.

    Warum kannst du nicht einfach erst VB_1 und Tex-B machen? 😎


Anmelden zum Antworten