DirectX :: XMVECTOR函数XMVectorSetByIndex()没有设置float(C ++)

问题描述 投票:1回答:2

我在执行似乎应该是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)

c++ vector directx
2个回答
3
投票

XMVectorSetByIndex函数返回带有修改内容的新向量,它不会修改输入向量。所以你应该覆盖test

test = XMVectorSetByIndex(test, new_y, 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);
© www.soinside.com 2019 - 2024. All rights reserved.