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

05.06.2003, 12:31

Komplettes Level an die Grafikkarte übergeben?

Was ich mich frage ist, ob die kompletten Leveldaten (alle Vertizes) ständig an die Grafikkarte übergeben werden oder ob irgendwie berechnet wird was nicht auf den Bildschirm muss und es dann weglassen. Die Grafikkarte zeichnet ja sowieso nichts, was nicht zu sehen (also z.B. hinter der Kamera) ist. Aber dennoch müssen ja ständig die Vertix Daten verwendet werden. Ist das nicht langsam?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

05.06.2003, 12:39

Es kommt auf die Grafikkarte an.
Bei modernen Grafikkarten ist es eher so, dass man ihnen lieber "zu viele" Daten schickt, denn sie können all die Vertizes so schnell verarbeiten, dass man dort am falschen Ende sparen würde. Wenn die Optimierungen von der Seite des Spiels her übertrieben sind, kosten sie mehr Zeit, als man durch das Nicht-Zeichnen von unsichtbaren Teilen spart, es kann dadurch also sogar langsamer werden.
Der Bottleneck liegt meistens bei der Fillrate, also der Anzahl von Pixeln, die eine Grafikkarte pro Sekunde zeichnen kann (das sind etliche Milliarden). Unsichtbare Geometrie wird sowieso nicht gezeichnet und verbraucht daher keine Fillrate.
Hat man jedoch einen Level, wo viele Objekte andere Objekte verdecken, so kann man dort ansetzen und versuchen, zu verhindern, dass ein und derselbe Pixel zu oft überschrieben wird, bevor er bei seiner endgültigen Farbe bleibt. Das geht recht gut mit Portalen.

Übrigens werden die Daten nicht wirklich dorthin "geschickt", denn sie sind ja normalerweise schon im Speicher der Grafikkarte.

3

05.06.2003, 17:25

Das ist wirklich sehr interessant. Wenn man tiefer in die Welt der Spieleprogrammierung einsteigt dann wird man immer wieder überrascht.

Die Daten sind doch nur schon im Speicher der Karte wenn ich meinen Vertex Buffer nicht im RAM anlege oder?

Übrigens, zur DLL Erstellung im Buch: Finde da hätte auch die "einfachere Methode" erklärt werden können. Also wie die Tribase Engine das macht. Die Klassen mit WHATEVERAPI versehen, dann die DLL und LIB erzeugen, im Hauptprogramm die LIB einbinden und die Header Dateien includen. Kein dynamisches Laden (was auch ein Nachteil ist), keine Pointer müssen geholt werden usw.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

05.06.2003, 17:28

Wegen der DLLs: Ja, aber es ging in dem Teil ja um Plug-In-Programmierung, und dafür kann man die "einfache" Methode ja nicht brauchen. Aber ich werde es vielleicht in die zweite Auflage mit reinpacken...

Werbeanzeige