DirectX :: XMVECTOR函数XMVectorSetByIndex()未设置浮点(C ++)

时间:2019-05-01 08:18:04

标签: c++ vector directx

我在执行C ++中看起来应该是一个简单任务的过程中遇到了一些麻烦,在这里我试图使用命令XMVectorSetByIndex()来更改矢量(DirectX :: XMVECTOR)中的值。

在下面的代码中,命令XMVectorGetByIndex()可以正常工作,将new_y设置为1.7(添加0.2后)。但是,XMVectorSetByIndex()不会导致测试变成我期望的{0.0f,1.7f,2.0f,0.0f}(而是保持不变)。

    XMVECTOR test = { 0.0f, 1.5f, 2.0f, 0.0f };
    float new_y = XMVectorGetByIndex(test, 1) + 0.2;
    XMVectorSetByIndex(test, new_y, 1);

我尝试了几种不同的方法,但是没有运气使该功能正常工作。我只是看不到问题出在哪里(特别是考虑到XMVectorGetByIndex()可以正常工作。

任何帮助将不胜感激:)

https://msdn.microsoft.com/en-us/library/hh404810(v=vs.85).aspx(XMVectorSetByIndex) https://msdn.microsoft.com/en-us/library/Hh404786(v=VS.85).aspx(XMVectorGetByIndex)

2 个答案:

答案 0 :(得分:3)

XMVectorSetByIndex函数返回内容已修改的新向量,它不会就地修改输入向量。因此,您应该覆盖test

test = XMVectorSetByIndex(test, new_y, 1);

答案 1 :(得分:2)

XMVectorSetByIndex不会修改您传入的向量,而是返回新结果。

XMVECTOR test = { 0.0f, 1.5f, 2.0f, 0.0f };
float new_y = XMVectorGetByIndex(test, 1) + 0.2;
test = XMVectorSetByIndex(test, new_y, 1);