DOTY

3. DirectXMath - Matrix 본문

DirectX

3. DirectXMath - Matrix

증식세포 2023. 4. 24. 17:37
728x90
반응형

DirectXMath 라이브러리를 활용한 행렬

  • XMMATRIX
    • 4X4 행렬을 사용할 때 XMMATRIX를 사용한다.
    • 행렬을 한번에 처리할 수 있고 이 또한 SIMD를 활용한다.
    • XMFLOAT4X4형식을 사용하는 것을 권장한다.
  • 행렬 입력
// 기본적으로 행렬은 네 개의 XMVECTOR로 표현한다. (SIDM활용)
XMVECTOR r[4];

// 행벡터 네 개를 지정하여 초기화 할 수 있다.
XMMATRIX (FXMVECTOR R0, FXMVECTOR R1, FXMVECTOR R2, FXMVECTOR R3);

// 성분 16개를 직접 지정해서 초기화 할 수 있다.
XMMATRIX (float m00, float m01, float m02, float m03,
	float m10, float m11, float m12, float m13,
	float m20, float m21, float m22, float m23,
	float m30, float m31, float m32, float m33);
    
// 비슷한 방법으로 다른 함수도 지원한다.
XMMATRIX XM_CALLCONV XMMatrixSet(
	float m00, float m01, float m02, float m03,
	float m10, float m11, float m12, float m13,
	float m20, float m21, float m22, float m23,
	float m30, float m31, float m32, float m33);
    
// 부동소수점 수 16개의 배열을 지정해서 초기화 할 수 있다.
explict XMMATRIX(_In_reads_(16) const float *pArray);

※ 행렬을 저장할 때 XMMATRIX 대신 XMFLOAT4X4형식을 사용하는 것이 좋다.

 

  • 행렬 적재, 저장 함수
// 적재하는 함수
XMMATRIX MX_CALLCONV XMLoadFloat4x4(const XMFLOAT4X4* pSource);

// 저장하는 함수
void XM_CALLCONV XMStoreFloat4x4(XMFLOAT4X4 pDestination, FXMMATRIX M);

 

 

  • 행렬 함
// return [단위행렬]
XMMATRIX XM_CALLCONV XMMatrixIdentity();

// return bool M == I ?
bool XM_CALLCONV XMMatrixIsIdentitiy(FXMMATRIX M);

// return AB
XMMATRIX XM_CALLCONV XMMatrixMultiply(FXMMATRIX A, CXMMATRIX B);

// return [M의 전치행렬]
XMMATRIX XM_CALLCONV XMMatrixTranspose(FXMMATRIX M);

// return det M ([det M, det M, det M, det M] 으로 돌려준다.)
XMVECTOR XM_CALLCONV XMMatrixDeterminant(FXMMATRIX M);

// reutrn [M의 역행렬] (pDeterminant에는 XMMVETOR 형태의 det M 을 넣어준다.)
XMMATRIX XM_CALLCONV XMMatrixInverse(XMVECTOR* pDeterminant, FXMMATRIX M);

 

728x90
반응형

'DirectX' 카테고리의 다른 글

DirectX11. 2) D3D11 Initialize  (1) 2023.06.09
DirectX11. 1) 창 띄우기  (0) 2023.06.07
4. DirectXMath - Transform  (1) 2023.05.02
2. DirectXMath - Vector  (0) 2023.04.21
1. DirectX12 - Win32 프로젝트 ( &에 l-value가 있어야 합니다 )  (0) 2023.04.17
Comments