Obecnie piszę dla naszego studia mały wieloplatformowy silnik gier 2D oparty na OpenGL. Kiedy badałem, której klasy Vector Vector użyć, natknąłem się na trzy różne paradygmaty projektowania:
Float & Call-by-value, jak w tym artykule Gamasutra . Wydaje się być szybki, ale oferuje niewielką precyzję (zobacz także ten wątek ). Pro: Szybki, przenośny i kompatybilny z większością bibliotek.
Podwójne i Call-by-referencyjne. Jeśli dobrze rozumiem powyższy artykuł, mógłbym również użyć 2 zmiennych o podwójnej precyzji zamiast 4 liczb zmiennoprzecinkowych. Zgodnie z powyższym wątkiem podwójny jest nadal wolniejszy niż pływak.
Szablon podwójny i zmiennoprzecinkowy: W popularnej książce „ Game Engine Architecture ” wykorzystuje się szablony, aby w razie potrzeby można było stosować zmiennoprzecinkowe i zmiennoprzecinkowe. Oczywistym minusem jest rozdęcie kodu. Wątpię też, czy kod można zoptymalizować bez pisania dwóch klas.
Z przyjemnością dowiem się, jakich rozwiązań używasz w swoich silnikach wewnętrznych i jak precyzyjne są np. Popularne silniki gier, więc mogę zdecydować, jakie rozwiązanie zastosuję w naszym silniku. W tej chwili myślę o zwykłym użyciu precyzji float i z nią żyć.