Comment utiliser correctement un XMVECTOR variable membre

J'ai un simple IRenderable classe qui a des membres pour la position, l'échelle et la rotation:

XMFLOAT3 _position;
XMFLOAT3 _scaling;
XMVECTOR _rotation;

Je tente de les définir avec le constructeur. La première méthode donne ici une violation d'accès 0x00000000 en essayant de mettre en _rotation (_position et _scaling sont toutes les deux très bien):

IRenderable() : _position(XMFLOAT3(0, 0, 0)), _scaling(XMFLOAT3(1, 1, 1)), _rotation(XMQuaternionIdentity()) { }

Faire _rotation un XMVECTOR* au lieu et à l'aide de _rotation(nouveau XMVECTOR()) dans le constructeur définit un vide XMVECTOR, mais jette alors une violation d'accès ultérieurement, lorsque vous essayez de définir l'identité de Quaternions:

*_rotation = XMQuaternionIdentity();

À l'aide de l'adresse de l'XMQuaternionIdentity dans le constructeur fonctionne bien lors de la création de l'objet,

IRenderable() : _position(new XMFLOAT3(0, 0, 0)), _scaling(new XMFLOAT3(1, 1, 1)), _rotation(&XMQuaternionIdentity()) { }

mais alors le quaternion lui-même contient des données incorrectes par le temps, elle doit être utilisée pour le rendu avec. Les deux _position et _scaling fonctionnent très bien dans toutes ces situations.

Quel est le corriger façon d'utiliser XMVECTOR dans cette situation?

InformationsquelleAutor mikeschuld | 2011-07-24