XMVECTOR 奇怪的值

XMVECTOR weird values

从 DirectX 开始,然后弄乱 XMVECTOR

(我知道我不会在上下文中使用它们,我只是好奇)

// 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

虽然很有趣,但我想知道我做错了什么,或者这是否确实是预期的功能。

底层 SIMD 指令是无类型的。您可以将相同的数据视为 4 个浮点数或 4 个整数(或 8 个短整型或 16 个字节)。 DirectXMath 通常使用 4 个浮点数,这是你的 XMVECTORXMVectorSet.

得到的

如果您使用 float x = XMVectorGetX(vector);,您会返回“1.0”。

或者,您可以使用 XMVECTOR vector = XMVectorSetInt(1, 2, 3, 1);

DirectXMath Programmer's Guide as well as the GitHub project