XMVECTOR怪异值

时间:2019-03-06 18:01:23

标签: c++ vector graphics directx directx-12

从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

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

1 个答案:

答案 0 :(得分:0)

基础SIMD指令是无类型的。您可以将相同的数据视为4个浮点数或4个整数(或8个短裤或16个字节)。 DirectXMath通常可以使用4个浮点数,这就是您的XMVECTORXMVectorSet得到的结果。

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

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

请参见DirectXMath Programmer's GuideGitHub project