Actualmente estoy escribiendo un pequeño motor de juegos 2D multiplataforma basado en OpenGL para nuestro estudio. Cuando investigué qué clase de Vector 2D usar, me topé con tres paradigmas de diseño diferentes:
Flotador y llamada por valor, como en este artículo de Gamasutra . Parece ser rápido pero ofrece poca precisión (ver también este hilo ). Pro: rápido, portátil y compatible con la mayoría de las bibliotecas.
Doble y llamada por referencia. Si entiendo bien el artículo anterior, también podría usar 2 variables de doble precisión en lugar de los 4 números flotantes. De acuerdo con el hilo anterior, el doble aún es más lento que el flotador.
Plantilla para doble y flotante: El popular libro " Game Engine Architecture " utiliza plantillas para hacer posible usar flotante y doble según sea necesario. La desventaja obvia es la hinchazón de código. Además, dudo que el código pueda optimizarse sin básicamente escribir dos clases, de todos modos.
Apreciaría saber qué soluciones está utilizando en sus motores internos y cuán precisos son, por ejemplo, los motores de juegos populares, para poder decidir qué solución implementaré en nuestro motor. En este momento estoy pensando simplemente en usar la precisión de flotación y vivir con ella.