2014-06-26 20 views
5

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

+0

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

risposta

6

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
+1

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. –