(DX11 물방울 책 보고 공부한 내용을 정리.)
(들어가기전 사전공부)
DirectX 11의 D3DX 라이브러리에는 3차원 수학코드가 포함되어 있지 않다고 합니다.
그 대신 D3D와 개별적으로 개봘된 XNAMath 라이브러리를 제공합니다.
※ XNAMath 라이브러리 -> DirectXMath 라이브러리
(2.xx대 버전) (3.xx 대 버전)
이 라이브러리는 SSE2 명령 집합을 사용합니다.
(Streaming SIMD Extension 2)
※ SIMD ( Single Instruction Multiple Data)
하나의 명령어로 여러개의 데이터 처리
ex)
XMVECTOR : 16바이트 정렬, SIMD 지원 ,레지스터 타입 ( 지역변수 or 전역변수로 사용 )
XMFLOAT4 : SIMD 미지원 , 스토리지 타입 , 클래스 자료 멤버 ( 흔히 사용하는 Vector의 4성분 )
XMFLOAT3 : SIMD 미지원 , 스토리지 타입 , 클래스 자료 멤버 ( 흔히 사용하는 Vector의 3성분 )
XMFLOAT2 : SIMD 미지원 , 스토리지 타입 , 클래스 자료 멤버 ( 흔히 사용하는 Vector의 2성분 )
XMMATRIX : SIMD 지원
XMFLOAT4X4 : SIMD 미지원
XMVECTOR는 쉽게 생각하면 FLOAT가 연속되게 저장되어 있다고 생각하시면 됩니다.
연속되어 있기 때문에 따로뜯기가 조금 어렵다고 생각하시면 편할 것 같습니다.
사용법
1. XMFLOAT4(~2)를 XMVECTOR로 적재
2. XMVECTOR를 계산
3. XMVECTOR를 XMFLOAT4(~2)로 바꾸어 사용
(SIMD 로 인해 덧셈,뺄셈,스칼라 곱셈 등 의 이점을 가져올 수 있습니다.)