Поделиться через


Функция XMStoreFloat4x4 (directxmath.h)

Сохраняет XMMATRIX в XMFLOAT4X4.

Синтаксис

void XM_CALLCONV XMStoreFloat4x4(
  [out] XMFLOAT4X4 *pDestination,
  [in]  FXMMATRIX  M
) noexcept;

Параметры

[out] pDestination

Адрес, по которому будут храниться данные.

[in] M

Матрица, содержащая данные для хранения.

Возвращаемое значение

Нет.

Remarks

XMFLOAT4X4 представляет собой матричную форму со строками. Чтобы записать данные по основным столбцам, перед вызовом функции store необходимо транспонировать XMMATRIX через XMMatrixTranpose .

Эта функция принимает матрицу и записывает компоненты в шестнадцать значений с плавающей запятой с одной точностью по указанному адресу. Наиболее значимый компонент первого вектора строки записывается в первые четыре байта адреса, за ним следует второй наиболее значимый компонент первой строки и т. д. Затем вторая строка записывается в память, начиная с 16 байтов, а затем третья строка в память, начиная с байта 32, и, наконец, четвертая строка в память, начиная с байта 48.

Следующий псевдокод демонстрирует работу функции .

pDestination->_11 = M[0].x; // 4 bytes to address (uint8_t*)pDestination
pDestination->_12 = M[0].y; // 4 bytes to address (uint8_t*)pDestination + 4
pDestination->_13 = M[0].z; // 4 bytes to address (uint8_t*)pDestination + 8
pDestination->_14 = M[0].w; // 4 bytes to address (uint8_t*)pDestination + 12

pDestination->_21 = M[1].x; // 4 bytes to address (uint8_t*)pDestination + 16
pDestination->_22 = M[1].y; // 4 bytes to address (uint8_t*)pDestination + 20
pDestination->_23 = M[1].z; // 4 bytes to address (uint8_t*)pDestination + 24
pDestination->_24 = M[1].w; // 4 bytes to address (uint8_t*)pDestination + 28

pDestination->_31 = M[2].x; // 4 bytes to address (uint8_t*)pDestination + 32
pDestination->_32 = M[2].y; // 4 bytes to address (uint8_t*)pDestination + 36
pDestination->_33 = M[2].z; // 4 bytes to address (uint8_t*)pDestination + 40
pDestination->_34 = M[2].w; // 4 bytes to address (uint8_t*)pDestination + 44

pDestination->_41 = M[3].x; // 4 bytes to address (uint8_t*)pDestination + 48
pDestination->_42 = M[3].y; // 4 bytes to address (uint8_t*)pDestination + 52
pDestination->_43 = M[3].z; // 4 bytes to address (uint8_t*)pDestination + 56
pDestination->_44 = M[3].w; // 4 bytes to address (uint8_t*)pDestination + 60

Требования к платформе

Microsoft Visual Studio 2010 или Microsoft Visual Studio 2012 с Windows SDK для Windows 8. Поддерживается для классических приложений Win32, приложений Магазина Windows и Windows Phone 8 приложений.

Требования

Требование Значение
Целевая платформа Windows
Header directxmath.h

См. также раздел

Функции хранилища векторов библиотеки DirectXMath