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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

28.10.2013, 07:00

1. Verwende nie ZeroMemory, lieber die Sprache ausnutzen:


Wieso denn nie?

Die Refresh Rate explizit auf 60 zu setzen, ist sogar eine eher schlechte Idee. Nicht jeder Monitor hat notwendigerweise eine Refresh Rate von exakt 60 Hz. Wenn die angegebene RefreshRate aber nicht exakt mit der des angeschlossenens Monitor übereinstimmt, kann DXGI z.B. im Fullscreen nicht Flippen, sondern muss Blitten. Daher: RefreshRate besser einfach leer lassen, sofern man keinen ganz speziellen Grund hat, tatsächlich eine ganz bestimmte Refresh Rate anzufordern...


Stimmt, aber quasi jedes Spiel bietet die Option für vsync an. Statt hart 60/1 zu konfigurieren sollte man sich einen passenden Mode auswählen und die SC auf Basis der DXGI_MODE_DESC* einstellen.
@D13_Dreinig

Beiträge: 1 223

Wohnort: Deutschland Bayern

Beruf: Schüler

  • Private Nachricht senden

12

28.10.2013, 10:55

Zitat

Wieso denn nie?

Weil es so gut wie nie sinnvoll ist.
In den seltenen Fällen in den es möglicherweise doch sinnvoll sein könnte, gibt es außerdem noch "std::memset". Das ist sogar im Standard und nicht unnötig platformabhänig. (Auch wenn das bei Dx Anwendungen wohl nicht das oberste Ziel ist...) Wer unbedingt C-Funktionen vermeiden will, hat auch noch "std::fill" und "std::fill_n".

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

28.10.2013, 13:22

Zitat

Wieso denn nie?

(Auch wenn das bei Dx Anwendungen wohl nicht das oberste Ziel ist...)


Ja genau... Von daher ist ZeroMemory eine vollkommen valide Lösung... Wer pedantisch auf "reinem C++" oder "Platformunabhängigkeit" beharrt der kann das tun. Ansonsten ist ZeroMemory kein Nachteil.
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

14

28.10.2013, 13:24

Ja genau... Von daher ist ZeroMemory eine vollkommen valide Lösung... Wer pedantisch auf "reinem C++" oder "Platformunabhängigkeit" beharrt der kann das tun. Ansonsten ist ZeroMemory kein Nachteil.

Im konkreten Fall hier, hat es beispielsweise den Nachteil, dass alle Member des struct unnötigerweise doppelt beschrieben werden... ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

28.10.2013, 13:37

Im konkreten Fall hier, hat es beispielsweise den Nachteil, dass alle Member des struct unnötigerweise doppelt beschrieben werden... ;)


Stimmt schon. Aber das sollte i.A. auch kein performancekritischer Code sein, oder? :)
@D13_Dreinig

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

16

28.10.2013, 13:39

Nur weil es nicht performancekritisch ist, muss man es dennoch nicht unnötig ineffizient machen, wenn du mich fragst. Insbesondere, wenn dadurch nichtmal der Code einfacher wird... ;)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

28.10.2013, 13:50

Nur weil es nicht performancekritisch ist, muss man es dennoch nicht unnötig ineffizient machen, wenn du mich fragst.


Also etwas dieser Art war bei mir noch nie das Bottleneck. Ich weiß nicht ob man unter diesem Vorbehalt nicht einfach an der falschen Stelle optimiert. Aber klar... der 'saubere' Weg wäre vermutlich ein anderer, aber Praxis und Theorie unterscheiden sich i.A. stark, von daher find ich es quatsch sich an sowas aufzuhängen. Aber das ist meine persönliche Einstellung dazu. :)
@D13_Dreinig

18

28.10.2013, 23:12


1. Verwende nie ZeroMemory, lieber die Sprache ausnutzen:

Wieso denn nie?

Ja sorry, was ich meinte war: Benutze nie ZeroMemory oder std::memset oder whatever zum initialisieren eines Structs, da C++ so etwas bereits als Sprachfeature hat. :)

Werbeanzeige