避免使用DirectXMath XMStore/load

Kai*_*aan 5 c++ directx directx-11 directxmath

我以前做过OpenGL,现在正在学习一些DirectX11.新数学库中的一件事是向量和矩阵存在加载/存储方法(例如http://msdn.microsoft.com/en-us/library/ee415635(v=vs.85).aspx).

对我来说,当我想使用它们时,我需要存储/加载每个向量和矩阵,这让我很烦恼 - 很多庞大的代码 - 我想知道是否有任何漂亮,干净的替代加载/存储过程?

Rog*_*and 6

如果有帮助,你可以看看simplemath.它现在是DirectXTK的一部分.

从链接的网站:

为什么要包装DirectXMath?
DirectXMath提供高度优化的向量和矩阵数学函数,在编译为x86/x64时利用SSE SIMD内在函数,或在为Windows平台(如Windows RT或Windows Phone)编译时利用ARM NEON指令集.设计用于高效SIMD使用的缺点是DirectXMath可能有点复杂.开发人员必须了解正确的类型用法(了解SIMD寄存器类型之间的区别,如XMVECTOR与内存存储类型,如XMFLOAT4),必须注意保持SIMD堆分配的正确对齐,并且必须仔细构造其代码以避免访问来自SIMD寄存器的各个组件.这种复杂性对于获得最佳SIMD性能是必要的,但有时您只是希望在没有太多麻烦的情况下使用工作!

如果你是这样的话,你应该使用SimpleMath:

  • 寻找具有与C#XNA类型类似的API的C++数学库
  • 将现有的XNA代码从C#移植到C++
  • 希望以牺牲运行时效率为代价来优化程序员效率(简单性,可读性,开发速度)

如果您执行以下操作,则应直接访问基础DirectXMath API:

  • 想要创建最快的代码
  • 享受在原始SIMD中表达算法所需的横向思维