2017-10-21 196 views
1

Je voudrais obtenir le produit scalaire de deux vecteurs 3D dans float. Mais malheureusement, le résultat est un vecteur, pas un flotteur. Je rectifiées pour accéder à ses éléments à l'aide vector4_f32, mais je reçois une erreur, que ce n'est pas membre de __m128Comment est-il possible d'obtenir la valeur float de XMVECTOR? (DirectXMath)

float res = XMVector3Dot(a, b).vector4_f32[0]; 

L'opérateur [] n'est pas défini sur XMVECTOR

Répondre

3

Vous pouvez accéder à des éléments individuels de XMVECTOR en utilisant XMVectorGetX, XMVectorGetY, XMVectorGetZ et XMVectorGetW. Mais rappelez-vous, ce sont des opérations plus coûteuses car DirectXMath utilise un jeu d'instructions SIMD. Pour plus d'informations:

1: XMVector3Dot performance

2: Expensive than expected

+1

Vous pouvez également jeter un oeil à la [SimpleMath] (https://github.com/Microsoft/DirectXTK/wiki/SimpleMath) wrapper pour DirectXMath. –