Direct3D中Math函数介绍

Introduction

本文主要介绍Direct3D开发中使用的数学运算库。

Content

D3DXMath

这是Direct3D旧版本的数学运算库,主要有d3dx9math, d3dx10math.

xnamath

在DirectX11的SDK中包含了一个新的数学库xnamath,它主要是为XNA平台开发编写的,采用了SIMD提供运算效率,在PC程序开发中也可以使用。

DirectXMath

在Windows8.x之后DirectX SDK不再以单一组件形式提供,D3DXMath也已经被抛弃,微软推荐采用新使用C++编写的DirectXMath数学库,它可以看做xnamath的升级版本。


 

为了能充分利用SIMD的效率,在使用时可以采用以下步骤进行操作:

  • 局部或全局变使用XMVECTOR, XMMATRIX
  • 类的数据成员使用XMFLOAT, XMFLOATx*
  • 在进行运算前,使用相应的loading函数将XMFLOAT / XMFLOATx*转换为XMVECTOR/ XMMATRIX
  • 使用XMVECTOR / XMMATRIX进行运算
  • 采用相应的storage函数将结果从XMVECTOR/XMMATRIX转换回XMFLOAT / XMFLOATx*

 

 

 

可以参考MSDN博客上的这篇文章Introducing DirectXMath