Преобразование glm :: mat4 в XMFLOAT4X4

Я хочу создать исходную матрицу преобразования из кватерниона ориентации и вектора положения.

Моя исходная матрица представлена ​​в формате glm, но я хочу преобразовать матрицу glm в матрицу XMFLOAT4X4.

glm::mat4 glm_mWorld= glm::toMat4(_qOrientation);
glm_mWorld[3]       = glm::vec4(_vPosition);

glm_mWorld = glm::transpose(glm_mWorld);

Итак, как я могу загрузить содержимое glm_mWorld в XMFLOAT4X4?

Обновить:
Поэтому после того, как я предложил использовать memcpy, я придумал следующее:

XMFLOAT4X4  mTransform;
XMFLOAT4    qOrient;

glm::mat4 glm_mWorld    = glm::toMat4(_descriptor._qOrientation);
glm_mWorld[3]           = glm::vec4(_descriptor._vPosition);

glm_mWorld = glm::transpose(glm_mWorld);

memcpy(&mTransform.m[0][0], &glm_mWorld[0][0], sizeof(glm::mat4));

Это приводит к ошибке:

glm-0.9.4.3\glm\core\type_vec4.inl(251): error C2440: '<function-style-cast>' : cannot convert from 'const glm::vec3' to 'float'

Кроме того, что касается матриц основных столбцов / основных строк, glm использует основной столбец, а XMFLOAT4X4 использует основной ряд, поэтому я переставляю матрицу glm перед попыткой ее преобразования.

0

Решение

XMFLOAT4X4 имеет конструктор из float * так что вы можете просто позвонить:

auto xmMatrix = XMFLOAT4X4( &glmMatrix[0][0] );

Просто убедитесь, что ваши матрицы имеют одинаковые размеры и используют одинаковый основной порядок строк / столбцов.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]