Attualmente sto scrivendo un piccolo motore di gioco 2D basato su OpenGL multipiattaforma per il nostro studio. Quando ho cercato quale classe di vettore 2D usare, mi sono imbattuto in tre diversi paradigmi di progettazione:
Float & Call-by-value, come in questo articolo Gamasutra . Sembra essere veloce ma offre poca precisione (vedi anche questa discussione ). Pro: veloce, portatile e compatibile con la maggior parte delle librerie.
Doppio e chiamata per riferimento. Se capisco bene l'articolo sopra, potrei anche usare 2 variabili a doppia precisione invece dei 4 numeri float. Secondo il thread sopra il doppio è ancora più lento del float.
Template per double e float: il popolare libro " Game Engine Architecture " utilizza i template per rendere possibile l'uso di float e double in base alle esigenze. L'ovvio inconveniente è il bloat del codice. Inoltre, dubito che il codice possa essere ottimizzato senza fondamentalmente scrivere due classi, comunque.
Gradirei sapere quali soluzioni stai usando nei tuoi motori interni e quanto sono precisi, ad esempio, i motori di gioco più diffusi, così posso decidere quale soluzione implementerò nel nostro motore. Al momento sto pensando di usare semplicemente la precisione del galleggiante e conviverci.