Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Performant sortieren

Yves3 / 8 Antworten / Flachansicht Nickles

Hallo

Ich habe ein eindimmensionales WORD-Array.
Immer 6 Werte in diesem Array gehören zusammen und ihnen ist ein Wert aus einem zweidimmensionalen Int-Array zugeordnet.

Dabei geht es um eine TileEngine.. Den 6 Word-Indices ist je eine Textur zugeordnet.

Ich muss jetzt die Indices nach den Texturen sortieren, denen sie zugeordnet sind und je in einem separaten Array der Reihe nach festhalten, (1) um welche Textur es sich handelt und (2) wie viele Indices zu dieser Textur passen.

Am Schluss würde ich dann also 3 Arrays verwenden:
1. Array mit allen Indices sortiert nach dazugehörigen Texturen
2. Array, in dem gespeichert ist, welche Textur jeweils zu den Indices gehört
3. Array das angibt, wieviele Indices jeweils zur gleichen Textur gehören

Ich rufe dann die Zeichenfunktion für jede Textur einmal auf, so nach dem Stil:

int StartIndex=0;
for(int i=0; i {
SetTexture(Textur[Array2[i]])
Draw(Array1, StartIndex, StartIndex+Array3[i]);
StartIndex += Array3[i];
}

Der Witz an dem ganzen ist, dass das Sortieren und das Erstellen der 3 Arrays in jedem Frame gemacht werden musss und es daher schon verdammt schnell sein müsste.
Meine bisherigen Lösungsideen scheinen mir alle ein bisschen umständlich.

Ich hoffe ihr hab verstanden, wie ich das meine und könnt mir eventuel l helfen :)

Danke!





[Diese Nachricht wurde nachträglich bearbeitet.]

bei Antwort benachrichtigen
Andreas42 Yves3 „Ja, genau so ist es. Nur ein Punkt muss ich vielleicht noch mal genauer...“
Optionen

Hi!

Jetzt verstehe ich (denke ich zumindest ;-) ) was du vorhast bzw. benötigst. An der Stelle wird es dann auch zeit zu schreiben, dass ich mich selbst noch nie mit 3D-Grafik (in der Programmierung) befasst habe, deshalb kann ich nur Vorschläge amchen, wie man die datensache angeht.

Da hab' ich noch eine Anmerkung: eigentlich hatte ich gedacht, dass man die geordnete Speicherung nur mit den Sichtbaren Tiles durchführt, das ganze dann also an die Routine hängt, die den sichbaren Bereich berechnet. (Ich gehe jetzt vom normalen Clipping aus).

Die nächste Idee/Frage ist dann natürlich, ob man die Sortierung des vorherigen Bildes mitnutzen kann, also im Prinzip die sortierten Tiles durhclaufen, die nicht sichtbarn entfernen und dann nur die neu hinzugekommen einsortieren.

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen