Странные значения XMVECTOR - PullRequest
0 голосов
/ 06 марта 2019

Начиная с DirectX и возиться с XMVECTORs

(я знаю, что не использую их в контексте, мне просто любопытно)

// Vectors.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

#include <DirectXMath.h>
#include <DirectXPackedVector.h>


int main()
{
    using namespace DirectX;

    XMVECTOR vector = XMVectorSet(1, 2, 3, 1);

    int x = XMVectorGetIntX(vector);

    std::cout << "vector.x: " << x << std::endl;

    system("pause");

    return 0;
}

Это печатает значение 1065353216

Хотя интересно, мне интересно, что я делаю неправильно, или это действительно предполагаемая функциональность.

1 Ответ

0 голосов
/ 07 марта 2019

Базовые инструкции SIMD не содержат текста Вы можете рассматривать те же данные как 4 числа с плавающей запятой или как 4 целых числа (или 8 коротких или 16 байтов). DirectXMath обычно работает с 4-мя числами с плавающей точкой, то есть то, что ваш XMVECTOR получает от XMVectorSet.

Если вы используете float x = XMVectorGetX(vector);, вы получите обратно "1.0".

В качестве альтернативы вы могли бы использовать XMVECTOR vector = XMVectorSetInt(1, 2, 3, 1);

См. Руководство программиста DirectXMath , а также проект GitHub .

...