Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.07.2014, 22:18

Frage zum Rendern

Hallo Leute,

Ich hätte mal ne frage...
Ich hab in meinem 2D Spiel ein Level in einem VAO (VertexArrayObject) gespeichert.

Muss ich beim rendern darauf achten, dass ich nur die auf dem Screen zu sehenden Vertices rendere?
Oder managed das OpenGL?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

2

22.07.2014, 22:26

Nein musst du nicht, trotzdem kostet auch das Rendern von nicht sichtbaren Objekten Performance.
Es gibt dazu diverse culling Techniken. Meistens (z.B. bei 2D Spielen) kann man das aber vernachlässigen...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

3

23.07.2014, 00:21

Muss ich beim rendern darauf achten, dass ich nur die auf dem Screen zu sehenden Vertices rendere?
Oder managed das OpenGL?

Nein, OpenGL rendert, was du ihm hinwirfst. Dinge zu rendern, die am Ende nicht sichtbar sind, ist nicht gratis. Ob es sich auszahlt, nun einen gewissen Aufwand zu betreiben, um später nicht sichtbare Teile der Map im Vorfeld auszuschließen, hängt in erster Linie wohl von Größe und Komplexität der Map ab... ;)

4

23.07.2014, 12:25

Nicht sichtbare Pixel werden erst im rasterizer verworfen.
Bis dahin durchgehen deine Daten vs, hs, ds. Das ist an sich kein Problem. Das Problem liegt eher darin, dass deine Hardware immer auf alle Daten zugreifen muss. Und der Zugriff auf den Speicher ist immer ein Flaschenhals. Auf das caching kannst du dich auch nicht immer verlassen. Du kannst und solltest daher möglichst frühzeitig unsichtbare Daten verwerfen.

Das geht im Grunde ganz einfach: Die scene in metasektionen teilen, deren Koordinaten auf screen Space coordinates transformieren und checken, ob die Koordinaten sichtbar sind.
Mithilfe eines quadtree als metaeinteilung kannst du das ganze sogar rekursiv machen

Aber wie gesagt ist das nur für größere Level sinnvoll. Wenn du derzeit keine Performance Probleme hast wirst du das auch vernachlässigen können, essei denn deine Level wachsen um das 10 fache oder so ^^
EnvisionGame(); EnableGame(); AchieveGame(); - Visionen kann man viele haben. Sie umzusetzen und auf das Ergebnis stolz zu sein ist die eigentliche Kunst.

5

23.07.2014, 18:31

Danke,

Dann werde ich mich erstmal um andere Dinge kümmern :)

Werbeanzeige