(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 로 인해 덧셈,뺄셈,스칼라 곱셈 등 의 이점을 가져올 수 있습니다.)

Posted by Dongkey
,