Ho già fatto OpenGL e ora sto imparando alcune DirectX11. Una delle cose nella nuova libreria matematica è la presenza di metodi Load/Store per vettori e matrici (ad esempio http://msdn.microsoft.com/en-us/library/ee415635(v=vs.85).aspx). Per me questo mi sorprende molto dover memorizzare/caricare ogni vettore e matrice quando voglio usarli - un sacco di codice ingombrante - e mi chiedevo se ci sono delle alternative carine e pulite alle procedure di carico/immagazzinamento?Evitare DirectXMath XMStore/caricare
risposta
Se ciò può essere utile, è possibile consultare simplemath. Ora fa parte dello DirectXTK.
Dal sito collegato:
Perché avvolgere DirectXMath?
DirectXMath fornisce funzioni vettoriali e matrici matematiche altamente ottimizzate che sfruttano SSE SIMD intrinseci se compilato per x86/x64, o il set di istruzioni ARM NEON quando compilato per una piattaforma ARM come Windows RT o Windows Phone. Lo svantaggio di di essere progettato per un utilizzo SIMD efficiente è che DirectXMath può essere un po 'complicato da utilizzare. Gli sviluppatori devono essere a conoscenza dell'uso corretto del tipo (capire la differenza tra i tipi di registro SIMM come XMVECTOR vs. memoria XMFLOAT4), deve fare attenzione a mantenere l'allineamento corretto per l'allocazione SIMD heap e deve strutturare attentamente i propri codice per evitare accedere a singoli componenti da un registro SIMD. Questa complessità è necessaria per prestazioni SIMD ottimali, ma a volte si desidera semplicemente per far funzionare le cose senza problemi!Si dovrebbe usare SimpleMath se sei:
- Alla ricerca di una libreria C++ matematica con API simile a C# tipi di XNA
- porting di programma XNA esistente da C# per C++
- Volendo ottimizzare per efficienza del programmatore (semplicità, leggibilità, velocità di sviluppo) a scapito del runtime efficienza
Si dovrebbe andare direttamente al D sottostante irectXMath API se:
- desidera creare il codice più veloce possibile
- Godetevi il pensiero laterale necessario per esprimere algoritmi in SIMD grezzo
La libreria DirectXMath sta cercando di aiutarti evidenziando quando si verificano i carichi/i negozi. È inteso come un involucro sottile sulla natura SIMD delle intrinseche sottostanti, ma è un po 'più portatile sulla piattaforma. Se lo trovi noioso, allora '' SimpleMath'' è davvero un'alternativa ragionevole. –
Non siete obbligati ad utilizzare DirectXMath con DirectX, nè è una migliore libreria di matematica. Basta prendere quello che hai usato con OpenGL o sceglierne un altro. Ce ne sono in abbondanza. Se sei interessato a GameDev o alle simulazioni, avrai comunque bisogno di una libreria di fisica con il proprio sottoinsieme matematico. – Drop