DirectX12Math 팁

DirectX 문서

XMVECTOR

XMVECTOR는 16바이트 경계에 alignment가 일어나므로 클래스의 멤버변수로 활용할땐

매개변수 XMVECTOR

XMVECTOR 인스턴스를 인수로 해서 함수를 호출할때 XMVECTOR 값이 스택이 아닌 SSE/SSE2 레지스터를 통해서 함수에 전달되게 해야 한다. 그런 식으로 전달 가능한 인수의 개수는 플랫폼과 컴파일러 마다 다르다. XMVECTOR 매개변수 전달에 대한 규칙을 요약하면 아래와 같다.

생성자에서는 조금 다른 규칙을 적용함을 주의한다.

상수 벡터

상수벡터를 포함한 중괄호 초기화 구문에서는 XMVECTORF32 형식을 사용해야 한다.

const XMVECTORF32 Vector = {0.5f, 0.5f, 0.5f, 0.5f};

상등 비교

부동 소수점는 항상 오차를 동반하기 때문에, 상등 판정을 할때는 Epsilon(입실론) 을 오차범위를 지정해 상등을 비교한다.

XMFINLINE bool XM_CALLCONV XMVector3NearEqual(
	FXMVECTOR U,
	FXMVECTOR V,
	FXMVECTOR Epsilon
);

XMMATRIX

XMVECTOR와 마찬가지로, XMMATRIX를 사용할때도 XMFLOAT4X4를 멤버변수로 사용하는 것이 추천된다.