使用新的 XMVECTOR 和 XMFLOAT3 类获得两点之间距离的最佳方法是什么?我在 XMVector* 函数系列中找不到执行此操作的函数,因此我想出了以下内容:
float distance(const XMFLOAT3& v1,const XMFLOAT3& v2)
{
XMVECTOR vector1 = XMLoadFloat3(&v1);
XMVECTOR vector2 = XMLoadFloat3(&v2);
XMVECTOR vectorSub = XMVectorSubtract(vector1,vector2);
XMVECTOR length = XMVector3Length(vectorSub);
float distance = 0.0f;
XMStoreFloat(&distance,length);
return distance;
}
这会比普通的 Vector3 类更快吗?只有 3 个浮点数用于 x、y、z,然后使用 sqrt,因为它使用了内在优化?即:
float Distance(const Vector3& point1,const Vector3& point2)
{
float distance = sqrt( (point1.x - point2.x) * (point1.x - point2.x) +
(point1.y - point2.y) * (point1.y - point2.y) +
(point1.z - point2.z) * (point1.z - point2.z) );
return distance;
}