2013-07-19 3 views
0

방향 쿼터니언과 위치 벡터로부터 초기 변환 행렬을 만들고 싶습니다.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에로드 할 수 있습니까?

업데이트 :

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은 major 컬럼을 사용하고 XMFLOAT4X4는 행 메이저를 사용합니다. 그래서 변환을 시도하기 전에 glm 행렬을 조 변경합니다.

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

은 그냥 행렬이 같은 크기가 있는지 확인하고 같은 행/열 주요 순서를 사용

+0

지금까지 어떤 시도를 했습니까? 'XMFLOAT4x4'는 http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.reference.xmfloat4x4(v=vs.85).aspx에 따른 단순한 조합입니다. 그냥 memcpy로해라. (하지만 glm과 xnamath가 행렬을 저장하는 순서에주의해야한다.) – acrilige

+0

위의 업데이트보기 – fishfood

+0

glm :: valut_ptr – acrilige

답변

0

XMFLOAT4X4 그래서 당신은 단지 호출 할 수 있습니다 float *에서 생성자를 가지고있다.