Es wird Ihnen schwer fallen, eine mobile GPU zu finden, die auch dann Doppel-GPUs verwenden kann, wenn Sie möchten, sodass ein Teil der Auswahl für Sie getroffen wird.
Es gibt nur wenige Stellen, an denen Sie von einem Wechsel von Floats mit einfacher Genauigkeit in Ihrem Spiel profitieren können:
Dies sind die beiden häufigsten Beispiele für Dinge, die Sie nicht in einem Float mit einfacher Genauigkeit speichern sollten, da sie über den Bereich, den Sie abdecken müssen, erheblich an Genauigkeit verlieren (in der ersten Sekunde Ihres Spiels können Sie die verstrichenen Werte darstellen Zeit bis innerhalb von Sekunden oder zehn Nanosekunden, aber nach 2,5 Stunden verlieren Sie allmählich die Millisekundengenauigkeit.2- 24
Das bedeutet aber nicht, dass Sie unbedingt Doppel verwenden müssen. Ganzzahlige Typen können mit diesen Werten problemlos umgehen. (Mit einem 32-Bit-Int können Sie 12 Tage lang ununterbrochen Millisekunden genau spielen. 64-Bit-Ints halten Millionen von Jahren.)
Ein Delta- Zeitwert liegt normalerweise in der Größenordnung von 16 Millisekunden. Wenn Sie ihn also in einem Float mit einfacher Genauigkeit speichern, erhalten Sie eine Genauigkeit von etwa s, was immer noch auf das Niveau von Nanosekunden - dh. Wahrscheinlich weit über die Präzision hinaus, mit der Sie Ihren Code zuverlässig zeitlich festlegen, Ihre Threads signalisieren oder Ihre Grafikaktualisierung koordinieren können. Wenn Sie hier mit einem Double mehr Präzision hinzufügen, wird Ihr Spiel wahrscheinlich nicht messbar verbessert.2- 29
So können Sie Ihre gesamte verstrichene Zeit mit hoher Genauigkeit oder unter Verwendung eines Integer-Typs speichern, Ihr Delta berechnen und einmal pro Frame in Float mit einfacher Genauigkeit konvertieren und von da an problemlos Floats verwenden.
Ähnliches gilt für Positionen. Selbst in einer riesigen Welt können Schwimmer mit einfacher Genauigkeit eine Position relativ zu ihrem übergeordneten Teil mit einer Genauigkeit von weniger als einem Millimeter lokalisieren , wenn Sie sie in Stücke mit einem Durchmesser von mehreren Kilometern oder weniger aufteilen .
Relative Offsets zwischen Objekten (zum Berechnen von Überschriften und dergleichen) lassen sich im Allgemeinen auch in großen Entfernungen in einem Float speichern. Ihr relativer Fehler bleibt im Vergleich zur Gesamtlänge des Vektors in einem kontrollierten Bereich.
Es gibt also nicht viel Grund, sich standardmäßig dem Doppelten zuzuwenden. Ich würde das nur in Betracht ziehen, wenn Sie ein ganz besonderes Bedürfnis haben, bei dem Sie die Präzision von Floats berechnet haben, es nicht schneiden und Ihre Verwendung von Doppel nur für den Teil Ihres Spiels beibehalten, der es aktiv benötigt.