从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
虽然很有趣,但我想知道自己在做错什么,或者这确实是预期的功能。
答案 0 :(得分:0)
基础SIMD指令是无类型的。您可以将相同的数据视为4个浮点数或4个整数(或8个短裤或16个字节)。 DirectXMath通常可以使用4个浮点数,这就是您的XMVECTOR
从XMVectorSet
得到的结果。
如果您使用float x = XMVectorGetX(vector);
,则会返回“ 1.0”。
或者,您可以使用XMVECTOR vector = XMVectorSetInt(1, 2, 3, 1);