Ich generiere ein prozedurales Terrain mit (einem hausgemachten fBm basierend auf) Perlin-Rauschen als Höhenkarte. Um das Gelände unendlich zu machen, zeichne ich einen Teil davon neu, während sich die Kamera bewegt.
Es gibt zwei Alternativen:
- haben entweder mehrere (sagen wir 9) Höhenkarten-Texturen und drehen sie, während sich die Kamera bewegt;
- oder haben Sie nur eine Höhenkarte (sagen wir 9-mal größer) und zeichnen Sie bei Bedarf nur einen Teil davon neu.
Hinweis:
Die beiden Ansätze zeichnen jedes Mal genau die gleiche Anzahl von Pixeln neu.
Aber:
- Im ersten Fall muss ich 3 kleine Texturen binden und sie vollständig neu zeichnen, um eine Linie meines Gitters neu zu zeichnen.
- Im zweiten Fall binde ich die gesamte größere Textur und zeichne nur eine Linie darin neu.
Frage: Sollte ich erwarten, dass einer schneller ist als der andere? Hat glBindTexture
höhere Kosten für größere Textur?
opengl
procedural-generation
Julien__
quelle
quelle
Antworten:
Ich weiß, dass dies eine alte Frage ist, aber ich habe viel mit der Erzeugung von prozeduralem Terrain herumgespielt. Daher würde ich die kleinere Option empfehlen (dh neun "Chunks"). Die Verwendung von Chunks bietet einige wichtige Vorteile.
Sie arbeiten natürlich zusammen. Hier erfahren Sie, wie Sie Chunks laden / entladen können, je nachdem, wo sich der Player befindet. Hinweis: Ein Chunk kann entladen werden, wenn sein Inhalt mit einem konsistenten zufälligen oder rauschgenerierenden Algorithmus (z. B. Perlin Noise) generiert wurde. dann können sie wieder geladen werden und sehen gleich aus.
Initialisierung
Spieler =
P
, Chunk =-
:Spielerbewegung
Entladener Block =
X
; Jede Abbildung erfolgt nach einigen Sekunden seit der letzten.quelle