DirectX 11을 이용한 3D 게임 프로그래밍 입문
1. DirectXMath.h 의 사용
딴짓거리
2022. 12. 21. 00:01
공간을 정의할때에 벡터계산은 필수이므로 벡터계산을 지원하는 라이브러리가 있다.
심지어 하드웨어적으로 벡터계산을 시행하는 레지스터가 따로 존재할 정도로 벡터계산의 성능은 중요한 것이다.
본 책에서는 xnamath.h 라는 라이브러리를 이용하지만
현재 그 라이브러리는 잘 쓰이지도 않고 최신 환경에서 실행하기가 굉장히 까다롭다.
그대신 DirectXMath.h 라이브러리를 사용하며 책에서 소개한 주요 벡터 계산 함수들을
DirectXMath.h 라이브러리 기준으로 기록해둔다.
XMVECTOR 구조체-> 128비트 만능 구조체. 2,3,4 차원 벡터 모두를 담을 수 있음
XMFLOAT2
XMFLOAT3
XMFLOAT4 -> 클래스 내부에서 사용하는 벡터 구조체. 차원별로 다르다.
XMFLOAT to XMVECTOR
XMFLOAT을 사용하려면 XMVECTOR에 적재해야 한다.
//XMFLOAT2를 XMVECTOR에 적재하는 함수
XMVECTOR XMLoadFloat2(CONST XMFLOAT2*pSource);
//XMFLOAT3를 XMVECTOR에 적재하는 함수
XMVECTOR XMLoadFloat3(CONST XMFLOAT3*pSource);
//XMFLOAT4를 XMVECTOR에 적재하는 함수
XMVECTOR XMLoadFloat4(CONST XMFLOAT4*pSource);
XMVECTOR to XMFLOAT
반대로 적재하는 함수
//XMVECTOR를 XMFLOAT2로 저장
VOID XMStoreFloat2(XMFLOAT2*pSource, FXMVECTOR V);
//XMFLOAT3를 XMVECTOR에 적재하는 함수
VOID XMStoreFloat3(XMFLOAT3*pSource, FXMVECTOR V);
//XMFLOAT4를 XMVECTOR에 적재하는 함수
VOID XMStoreFloat4(XMFLOAT4*pSource, FXMVECTOR V);