Зараз я пишу невеликий кросплатформенний 2-ігровий движок на основі OpenGL для нашої студії. Коли я досліджував, який 2D-клас вектор використовувати, я натрапив на три різні парадигми дизайну:
Float & Call-by value, як у цій статті про Gamasutra . Здається, це швидко, але пропонує невелику точність (див. Також цю нитку ). Pro: Швидкий, портативний та сумісний з більшістю бібліотек.
Подвійний та заклик за посиланням. Якщо я правильно розумію вищевказану статтю, я можу також використовувати 2 змінні з подвійною точністю замість 4 плаваючих чисел. Відповідно до вищезазначеного потоку подвійний все-таки повільніше, ніж плаваючий.
Шаблон для double та float: У широко популярній книзі " Архітектура ігрових двигунів " використовуються шаблони, що дозволяють використовувати float та double за потребою. Очевидним недоліком є роздуття коду. Крім того, я сумніваюся, що код можна оптимізувати, в основному не записуючи два класи, все одно.
Буду вдячний дізнатись, які рішення ви використовуєте в своїх власних двигунах і наскільки точні, наприклад, популярні ігрові двигуни, тож я можу вирішити, яке рішення я впроваджуватиму в нашому двигуні. На даний момент я думаю про те, щоб просто використовувати поплавкову точність і жити з нею.