zoukankan      html  css  js  c++  java
  • DirectX11 学习笔记5

    directx11 特别推出了一个数学库 用于向量 矩阵的计算。并且使用128位 同一时候计算4条32位数据 (SIMD)

    之前基本是用的directx10math.h这个头文件。  这个数学库既然是新出的。肯定在硬件方便处理起来比曾经的快很多,优化了非常多。

    技术永无止境嘛。推荐用新的

    而如今能够单独用 xnamath.h directx9 10 11 都能够用这个库,非常方便。 以下的表能够高速从曾经的数学库找到替换函数。

    对了 昨晚遇到一个坑。攻克了非常久。

    原来是因为xnamath 里面的  xmatrix  xmvector 等  涉及到一个对齐问题。

    假设是 局部变量、全局变量  感觉不到。硬件会自己主动对齐。 可是假设放在类成员变量。就非常easy报错了。 并且你看不出是那的问题。

    调试了非常久。

    所以我们在用这个库的时候,最后尽量避免设为类成员变量。

    下一节我将附上,把之前那个封装程序升级为xnamath库的完整源代码。并实现了绘制一个三角形。

    以后的教程都将在这个源代码上演示。

    他们的差别高速查询 :

    D3DXMath Type	DirectXMath Equivalent
    D3DXFLOAT16	HALF
    D3DXMATRIXA16	XMMATRIX or XMFLOAT4X4A
    D3DXQUATERNION
    
    D3DXPLANE
    
    D3DXCOLOR
    
    XMVECTOR is used rather than having unique types, so you will likely need to use an XMFLOAT4
    Note  D3DXQUATERNION::operator * calls the D3DXQuaternionMultiply function, which multiplies two quaternions. But, unless you explicitly use the XMQuaternionMultiply function, you get an incorrect answer when you use XMVECTOR::operator * on a quaternion.
    
    D3DXVECTOR2	XMFLOAT2
    D3DXVECTOR2_16F	XMHALF2
    D3DXVECTOR3	XMFLOAT3
    D3DXVECTOR4	XMFLOAT4
    (or if you can guarantee the data is 16-byte aligned, XMVECTOR or XMFLOAT4A )
    
    D3DXVECTOR4_16F	XMHALF4
     
    
    Note  There is no direct equivalent to D3DXVECTOR3_16F in XNAMath.
    
    D3DXMath Macro	DirectXMath Equivalent
    D3DX_PI	XM_PI
    D3DX_1BYPI	XM_1DIVPI
    D3DXToRadian	XMConvertToRadians
    D3DXToDegree	XMConvertToDegrees
     
    
    D3DXMath Function	DirectXMath Equivalent
    D3DXBoxBoundProbe	BoundingBox::Intersects(XMVECTOR, XMVECTOR, float&)
    D3DXComputeBoundingBox	BoundingBox::CreateFromPoints
    D3DXComputeBoundingSphere	BoundingSphere::CreateFromPoints
    D3DXSphereBoundProbe	BoundingSphere::Intersects(XMVECTOR, XMVECTOR, float&)
    D3DXIntersectTriFunction	TriangleTests::Intersects
    D3DXFloat32To16Array	XMConvertFloatToHalfStream
    D3DXFloat16To32Array	XMConvertHalfToFloatStream
    D3DXVec2Length	XMVector2Length or XMVector2LengthEst
    D3DXVec2LengthSq	XMVector2LengthSq
    D3DXVec2Dot	XMVector2Dot
    D3DXVec2CCW	XMVector2Cross
    D3DXVec2Add	XMVectorAdd
    D3DXVec2Subtract	XMVectorSubtract
    D3DXVec2Minimize	XMVectorMin
    D3DXVec2Maximize	XMVectorMax
    D3DXVec2Scale	XMVectorScale
    D3DXVec2Lerp	XMVectorLerp or XMVectorLerpV
    D3DXVec2Normalize	XMVector2Normalize or XMVector2NormalizeEst
    D3DXVec2Hermite	XMVectorHermite or XMVectorHermiteV
    D3DXVec2CatmullRom	XMVectorCatmullRom or XMVectorCatmullRomV
    D3DXVec2BaryCentric	XMVectorBaryCentric or XMVectorBaryCentricV
    D3DXVec2Transform	XMVector2Transform
    D3DXVec2TransformCoord	XMVector2TransformCoord
    D3DXVec2TransformNormal	XMVector2TransformNormal
    D3DXVec2TransformArray	XMVector2TransformStream
    D3DXVec2TransformCoordArray	XMVector2TransformCoordStream
    D3DXVec2TransformNormalArray	XMVector2TransformNormalStream
    D3DXVec3Length	XMVector3Length or XMVector3LengthEst
    D3DXVec3LengthSq	XMVector3LengthSq
    D3DXVec3Dot	XMVector3Dot
    D3DXVec3Cross	XMVector3Cross
    D3DXVec3Add	XMVectorAdd
    D3DXVec3Subtract	XMVectorSubtract
    D3DXVec3Minimize	XMVectorMin
    D3DXVec3Maximize	XMVectorMax
    D3DXVec3Scale	XMVectorScale
    D3DXVec3Lerp	XMVectorLerp or XMVectorLerpV
    D3DXVec3Normalize	XMVector3Normalize or XMVector3NormalizeEst
    D3DXVec3Hermite	XMVectorHermite or XMVectorHermiteV
    D3DXVec3CatmullRom	XMVectorCatmullRom or XMVectorCatmullRomV
    D3DXVec3BaryCentric	XMVectorBaryCentric or XMVectorBaryCentricV
    D3DXVec3Transform	XMVector3Transform
    D3DXVec3TransformCoord	XMVector3TransformCoord
    D3DXVec3TransformNormal	XMVector3TransformNormal
    D3DXVec3TransformArray	XMVector3TransformStream
    D3DXVec3TransformCoordArray	XMVector3TransformCoordStream
    D3DXVec3TransformNormalArray	XMVector3TransformNormalStream
    D3DXVec3Project	XMVector3Project
    D3DXVec3Unproject	XMVector3Unproject
    D3DXVec3ProjectArray	XMVector3ProjectStream
    D3DXVec3UnprojectArray	XMVector3UnprojectStream
    D3DXVec4Length	XMVector4Length or XMVector4LengthEst
    D3DXVec4LengthSq	XMVector4LengthSq
    D3DXVec4Dot	XMVector4Dot
    D3DXVec4Add	XMVectorAdd
    D3DXVec4Subtract	XMVectorSubtract
    D3DXVec4Minimize	XMVectorMin
    D3DXVec4Maximize	XMVectorMax
    D3DXVec4Scale	XMVectorScale
    D3DXVec4Lerp	XMVectorLerp or XMVectorLerpV
    D3DXVec4Cross	XMVector4Cross
    D3DXVec4Normalize	XMVector4Normalize or XMVector4NormalizeEst
    D3DXVec4Hermite	XMVectorHermite or XMVectorHermiteV
    D3DXVec4CatmullRom	XMVectorCatmullRom or XMVectorCatmullRomV
    D3DXVec4BaryCentric	XMVectorBaryCentric or XMVectorBaryCentricV
    D3DXVec4Transform	XMVector4Transform
    D3DXVec4TransformArray	XMVector4TransformStream
    D3DXMatrixIdentity	XMMatrixIdentity
    D3DXMatrixDeterminant	XMMatrixDeterminant
    D3DXMatrixDecompose	XMMatrixDecompose
    D3DXMatrixTranspose	XMMatrixTranspose
    D3DXMatrixMultiply	XMMatrixMultiply
    D3DXMatrixMultiplyTranspose	XMMatrixMultiplyTranspose
    D3DXMatrixInverse	XMMatrixInverse
    D3DXMatrixScaling	XMMatrixScaling
    D3DXMatrixTranslation	XMMatrixTranslation
    D3DXMatrixRotationX	XMMatrixRotationX
    D3DXMatrixRotationY	XMMatrixRotationY
    D3DXMatrixRotationZ	XMMatrixRotationZ
    D3DXMatrixRotationAxis	XMMatrixRotationAxis
    D3DXMatrixRotationQuaternion	XMMatrixRotationQuaternion
    D3DXMatrixRotationYawPitchRoll	XMMatrixRotationRollPitchYaw (Note the order of parameters is different: D3DXMatrixRotationYawPitchRoll takes yaw, pitch, roll, XMMatrixRotationRollPitchYaw takes pitch, yaw, roll)
    D3DXMatrixTransformation	XMMatrixTransformation
    D3DXMatrixTransformation2D	XMMatrixTransformation2D
    D3DXMatrixAffineTransformation	XMMatrixAffineTransformation
    D3DXMatrixAffineTransformation2D	XMMatrixAffineTransformation2D
    D3DXMatrixLookAtRH	XMMatrixLookAtRH
    D3DXMatrixLookAtLH	XMMatrixLookAtLH
    D3DXMatrixPerspectiveRH	XMMatrixPerspectiveRH
    D3DXMatrixPerspectiveLH	XMMatrixPerspectiveLH
    D3DXMatrixPerspectiveFovRH	XMMatrixPerspectiveFovRH
    D3DXMatrixPerspectiveFovLH	XMMatrixPerspectiveFovLH
    D3DXMatrixPerspectiveOffCenterRH	XMMatrixPerspectiveOffCenterRH
    D3DXMatrixPerspectiveOffCenterLH	XMMatrixPerspectiveOffCenterLH
    D3DXMatrixOrthoRH	XMMatrixOrthographicRH
    D3DXMatrixOrthoLH	XMMatrixOrthographicLH
    D3DXMatrixOrthoOffCenterRH	XMMatrixOrthographicOffCenterRH
    D3DXMatrixOrthoOffCenterLH	XMMatrixOrthographicOffCenterLH
    D3DXMatrixShadow	XMMatrixShadow
    D3DXMatrixReflect	XMMatrixReflect
    D3DXQuaternionLength	XMQuaternionLength
    D3DXQuaternionLengthSq	XMQuaternionLengthSq
    D3DXQuaternionDot	XMQuaternionDot
    D3DXQuaternionIdentity	XMQuaternionIdentity
    D3DXQuaternionIsIdentity	XMQuaternionIsIdentity
    D3DXQuaternionConjugate	XMQuaternionConjugate
    D3DXQuaternionToAxisAngle	XMQuaternionToAxisAngle
    D3DXQuaternionRotationMatrix	XMQuaternionRotationMatrix
    D3DXQuaternionRotationAxis	XMQuaternionRotationAxis
    D3DXQuaternionRotationYawPitchRoll	XMQuaternionRotationRollPitchYaw (Note the order of parameters is different: D3DXQuaternionRotationYawPitchRoll takes yaw, pitch, roll, XMQuaternionRotationRollPitchYaw takes pitch, yaw, roll)
    D3DXQuaternionMultiply	XMQuaternionMultiply
    D3DXQuaternionNormalize	XMQuaternionNormalize or XMQuaternionNormalizeEst
    D3DXQuaternionInverse	XMQuaternionInverse
    D3DXQuaternionLn	XMQuaternionLn
    D3DXQuaternionExp	XMQuaternionExp
    D3DXQuaternionSlerp	XMQuaternionSlerp or XMQuaternionSlerpV
    D3DXQuaternionSquad	XMQuaternionSquad or XMQuaternionSquadV
    D3DXQuaternionSquadSetup	XMQuaternionSquadSetup
    D3DXQuaternionBaryCentric	XMQuaternionBaryCentric or XMQuaternionBaryCentricV
    D3DXPlaneDot	XMPlaneDot
    D3DXPlaneDotCoord	XMPlaneDotCoord
    D3DXPlaneDotNormal	XMPlaneDotNormal
    D3DXPlaneScale	XMVectorScale
    D3DXPlaneNormalize	XMPlaneNormalize or XMPlaneNormalizeEst
    D3DXPlaneIntersectLine	XMPlaneIntersectLine
    D3DXPlaneFromPointNormal	XMPlaneFromPointNormal
    D3DXPlaneFromPoints	XMPlaneFromPoints
    D3DXPlaneTransform	XMPlaneTransform
    D3DXPlaneTransformArray	XMPlaneTransformStream
    D3DXColorNegative	XMColorNegative
    D3DXColorAdd	XMVectorAdd
    D3DXColorSubtract	XMVectorSubtract
    D3DXColorScale	XMVectorScale
    D3DXColorModulate	XMColorModulate
    D3DXColorLerp	XMVectorLerp or XMVectorLerpV
    D3DXColorAdjustSaturation	XMColorAdjustSaturation
    D3DXColorAdjustContrast	XMColorAdjustContrast
    D3DXFresnelTerm	XMFresnelTerm




  • 相关阅读:
    asp.net core3.1修改代码以支持windows服务发布
    .NET Core3.1IFreeSql使用FreeSql.Generator自动生成实体类
    西南大学2021年秋《线性代数》参考答案
    西南大学2021年秋形势与政策2 阶段一参考答案
    送给程序员的礼物
    西南大学2021年秋形势与政策2 阶段三参考答案
    拿 M 奖真的那么难吗?这份美赛攻略请收下!
    前端开发必会实战项目,Vue Router 实战来啦!​​
    你喜欢哪款 Linux 桌面?萝莉风?御姐风?
    Python 挑战,你通关了吗?速来看题解!
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6872670.html
Copyright © 2011-2022 走看看