Функция DirectX :: XMVECTOR XMVectorSetByIndex () не устанавливает плавание (C ++) - PullRequest
1 голос
/ 01 мая 2019

У меня возникли проблемы с выполнением того, что, по-видимому, должно быть простой задачей в C ++, где я пытаюсь изменить значения внутри вектора (DirectX :: XMVECTOR) с помощью команды XMVectorSetByIndex ().

В приведенном ниже коде команда 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 ]

3 голосов
/ 01 мая 2019

XMVectorSetByIndex функция возвращает новый вектор с измененным содержимым, она не изменяет входной вектор на месте. Поэтому вы должны переписать test:

test = XMVectorSetByIndex(test, new_y, 1);
2 голосов
/ 01 мая 2019

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);
...