Derzeit schreibe ich eine kleine plattformübergreifende OpenGL-basierte 2D-Game-Engine für unser Studio. Als ich nachforschte, welche 2D-Vektorklasse ich verwenden sollte, stieß ich auf drei verschiedene Designparadigmen:
Float & Call-by-Value, wie in diesem Gamasutra-Artikel . Scheint schnell zu sein, bietet aber wenig Präzision (siehe auch diesen Thread ). Pro: Schnell, portabel und kompatibel mit den meisten Bibliotheken.
Double & Call-by-Reference. Wenn ich den obigen Artikel richtig verstehe, könnte ich auch 2 Variablen mit doppelter Genauigkeit anstelle der 4 Gleitkommazahlen verwenden. Nach obigem Thread ist Double immer noch langsamer als Float.
Vorlage für Double und Float: Das weit verbreitete Buch " Game Engine Architecture " verwendet Vorlagen, um die Verwendung von Float und Double nach Bedarf zu ermöglichen. Der offensichtliche Nachteil ist das Aufblähen des Codes. Ich bezweifle auch, dass der Code optimiert werden kann, ohne grundsätzlich zwei Klassen zu schreiben.
Ich würde gerne erfahren, welche Lösungen Sie in Ihren internen Engines verwenden und wie präzise zB beliebte Game-Engines sind, damit ich entscheiden kann, welche Lösung ich in unserer Engine implementieren werde. Im Moment denke ich darüber nach, einfach Float-Präzision zu verwenden und damit zu leben.