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.]
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
Ja, genau so ist es.
Nur ein Punkt muss ich vielleicht noch mal genauer erklären:
Die Indices geben eigentlich nur an, welche Vertices(Punkte) in welcher Reihenfolge verwendet werden, um die Tiles zu zeichnen.
In meinem Fall spare ich dadurch 2 Vertices pro Tile.
Ein Index ist also nichts weiter als eine Zahl, die für den Vertex steht.
Zu deinem Tipp:
Die Zeichenfunktion von DirectX ist vorgegeben und verlangt als Parameter den Start- und Endindex.
Vorher wird eine Textur gewählt, was eben immer etwas Zeit braucht.
Auch die Zeichenfunktion braucht etwas Setupzeit... optimal wäre schon eine Sortierung.
Dein Tipp beinhaltet aber einen ziemlich interessanten Denkansatz.
Vielleicht sollten die Indices ja schon vor dem Aufrufen meiner Zeichnungsfunktion geordnet sein, oder wenigstens in einer Form, in der sie leichter geordnet werden können.
Wenn ich sie aber einfach nach Texturset geordnet abspeichere, wird es sehr schwer und wieder rechenaufwändig, herauszufinden, welche sichtbar sind.
Irgendwelche festen Grössen gibt es leider auch nicht, weil man ziemlich weit rauszoomen können sollte.
Das mit der Anzahl Texturen ist noch schwer vorauszusagen.
Wie schon erwähnt beinhaltet ein Texturset 32 Texturen... ich werde wahscheinlich ein Set pro Texturtyp verwenden.
Also beispielsweise eins für Gras mit verschiedenen Variationen und Übergängen zu Texturen von anderen Sets.
Also für jeden erdenklichen Bodentypen ein Set. Gras, Sand, Ödland, Marsboden, Mondboden, Asphalt, Schnee (wahrscheinlich mehrere Sets), Waldboden, Jungelboden, Eis, Sumpf, verseuchtes Gebiet... was mir dann noch einfällt.
[Diese Nachricht wurde nachträglich bearbeitet.]