VertexBuffer에는 IA와 World 버퍼가 존재한다.
크게, IA는 World 행렬을 곱하게 되면, 월드상에 존재하는 위치 회전 크기값이 조정되어 나타나는, 고정좌표값이 이어붙어 나온다.
World버퍼는 해당 좌표값 SRT에 곱해지게 되는 월드 좌표를 나타낸다.
SRT
- S(Scale)
- 객체의 크기를 표현한다.
- R(Rotation)
- 객체의 회전값을 표현한다.
- T(Translation)
- 객체의 위치값을 표현한다.
위와 같은 방식으로 SRT를 나타내게 된다.
이때, 로케이션을 곱하고 나타내는건 4개의 축을 사용하게 된다.
우리가 사용하는 X,Y,Z을 축으로 나타내는 3차원 축 인데, 왜 4개의 축을 사용하여 계산하게 되는지 알아보자.
여기서 사용하는 임의의 W라는 축을 나타내어 사용하는 좌표계를 동차 좌표계 라고 한다.
동차 좌표계
XYZ 3개의 축만으로는 덧셈 을 활용한 이동연산이 가능하지만, 이동연산 이외에 회전 스케일 등 다른 연산을 같은 방법으로 진행할 수 없다.
그러나, W라는 임의의 축을 하나 추가한것으로 다른연산을 동일한 곱셈 연산으로 처리할 수 있게된다.
위 링크에서 행렬 계산을 진행해보자.
X Y Z 축이 각각 1, 2, 3 이고 이 좌표를 2, 2, 2 만큼 이동시키고 싶다고 할 때, 행렬 곱을 행하면 다음과 같이 나타난다.
위와같이 행렬곱으로 위치좌표의 덧셈이 나타남을 확인할 수 있다.
여기서 사용되는 W는 뷰 공간에서의 심도 테스트에 이용된다.
심도 테스트
동차 좌표계에서 나타난 W값을 얼마나 깊은 곳에 있는지 계산하기 위해 사용하는것 을 이야기 한다.
간단하게 각 항에 W값을 곱해주는 방식으로 사용한다. W값이 1에 가까울 수록 무한원점임으로 원점에 가깝고 0에 가까울수록 원점에서 먼것을 나타낸다.
직교 투영법
일반적으로 2D의 경우, 깊이값이 존재하지 않기 때문에 원근감을 표현하지 않는다.
그래서 일반적인 3D표현방식에 비해 더 단순한 행렬곱을 사용하게 된다.
z값을 제한한 방법으로 뷰를 투영하게 된다.
'서울게임아카데미 교육과정 6개월 C++ ~ DirectX2D' 카테고리의 다른 글
60일차. RenderingTarget, AABB OBB 충돌처리 (0) | 2023.07.21 |
---|---|
59일차. DirectX_11 BlurTexture (0) | 2023.07.20 |
57일차. DirectX11->Renders (0) | 2023.07.15 |
56일차. DirectX11_2D시작, DirectX11_2D[Graphics] (0) | 2023.07.13 |
55일차. Queue_by_linkedlist, Tree (0) | 2023.07.10 |