J'écris actuellement un petit moteur de jeu 2D multiplateforme basé sur OpenGL pour notre studio. Lorsque j'ai recherché la classe de vecteur 2D à utiliser, je suis tombé sur trois paradigmes de conception différents:
Float & Call-by-value, comme dans cet article Gamasutra . Semble être rapide mais offre peu de précision (voir aussi ce fil ). Pro: rapide, portable et compatible avec la plupart des bibliothèques.
Double et appel par référence. Si je comprends bien l'article ci-dessus, je pourrais également utiliser 2 variables de double précision au lieu des 4 nombres flottants. Selon le fil ci-dessus, le double est toujours plus lent que le flotteur.
Modèle pour double et float: Le livre très populaire " Game Engine Architecture " utilise des modèles pour permettre d'utiliser float et double selon les besoins. L'inconvénient évident est le ballonnement du code. De plus, je doute que le code puisse être optimisé sans écrire fondamentalement deux classes, de toute façon.
J'apprécierais de savoir quelles solutions vous utilisez dans vos moteurs internes et la précision, par exemple, des moteurs de jeux populaires, afin que je puisse décider quelle solution je vais implémenter dans notre moteur. En ce moment, je pense simplement à utiliser la précision flottante et à vivre avec.