🎨DirectX
[DX] Mesh 부모 클래스, SRT 순서, ID3DX11EffectMatrixVariable, D3DXMatrixRotationYawPitchRoll
공대 컴린이
2023. 2. 7. 11:10
728x90
Grid는 격자모양이고 Mesh는 그물망 모양이다.
❗SRT 순서가 중요한 이유
world = S * R * T;
R 회전 후T 이동을 먼저 수행하는 것과 T 이동 후 R 회전을 먼저 수행하는 것은 서로 다른 결과가 도출된다.
1. 45도 회전한 후 10만큼 이동 -> 회전한 방향으로 10만큼 이동
2. 10만큼 이동 후 45도 회전 -> 정면으로 10만큼 이동 후 회전
S 스케일 조정 후 T 이동을 먼저 수행하는 것과 T 이동 후 S 스케일 조정을 먼저 수행하는 것은 서로 다른 결과를 도출한다.
1. 2배만큼 커진 후 10만큼 이동 -> 총 20만큼 이동
2. 10만큼 이동 후 2배 커지기 -> 총 10만큼 이동
openGL이나 엔진들의 경우 TRS 순서를 사용하는 경우도 있다.
💡 ID3DX11EffectMatrixVariable 자료형 사용
shader->AsMatrix("World")->SetMatrix(world);
기존에 World, View, Projection을 초기화 할 때는 As 함수를 통해 쉐이더안에 있는 변수를 검색해서 가져오기 때문에 속도가 느린 프로그래밍 방식이었다.
ID3DX11EffectMatrixVariable* sWorld, *sView, *sProjection;
sWorld = shader->AsMatrix("World");
sView = shader->AsMatrix("View");
sProjection = shader->AsMatrix("Projection");
따라서 미리 World, View, Projection을 검색해서 저장해놓은 뒤 사용하면 속도가 훨씬 빠르다.
💡 D3DXMatrixRotationYawPitchRoll 함수
D3DXMatrixRotationYawPitchRoll 함수는 x,y,z축을 한번에 회전시키는 기능을 구현한다.
모든 축을 한번에 회전시키지 않으면 짐벌락 현상이 발생할 수 있다.
728x90