입력 조립기 단계는 DirectX 그래픽스 파이프라인에서 첫 번째 단계로, 정점(Vertex) 데이터를 GPU 파이프라인에 전달하기 위해 형식에 맞게 준비하고 조립하는 역할을 한다.
IA는 정점 버퍼(Vertex Buffer) 및 인덱스 버퍼(Index Buffer)에서 데이터를 읽고, 프리미티브 형태(삼각형, 선 등)로 조합하며, 다음 단계인 버텍스 셰이더(Vertex Shader)로 넘긴다.
| 열거형 상수 | 의미 | 설명 |
|---|---|---|
D3D11_PRIMITIVE_TOPOLOGY_POINTLIST | 점 리스트 | 각 정점이 하나의 점 |
D3D11_PRIMITIVE_TOPOLOGY_LINELIST | 선 리스트 | 2개 정점 → 1개 선분 |
D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP | 선 스트립 | 선분들이 이어서 그려짐 |
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST | 삼각형 리스트 | 3개 정점 → 독립 삼각형 |
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP | 삼각형 스트립 | 연속된 삼각형으로 구성, 정점 수 절약 |
선 그리는 방식 차이
D3D11_PRIMITIVE_TOPOLOGY_LINELIST vs D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP
LINELIST는 항상 정점 2개를 이용해서 선을 그리기 선분을 여러 개 그릴 때 따로 그려지게 된다. 따라서 연속된 선분을 그리려면 이전에 끝났던 정점을 또다시 사용해서 선분을 그려야 한다.
LINESTRIP은 선분을 그릴 때 두 정점을 시작지점, 도착지점 2가지로 봤을 때 마지막 도착 지점의 정점이 다음에 그릴 때 시작 지점이 된다. 즉, 한 개의 정점이 추가로 들어오면 마지막에 도착했던 정점에서부터 이어져서 새로운 정점까지 선분이 그려지게 된다.
삼각형 그리는 방식 차이
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST vs D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP
TRIANGLELIST는 새로운 정점 3개 단위로 삼각형이 그려진다. 즉, 삼각형 2개를 그리려면 6개의 정점, 삼각형 3개를 그리려면 9개의 정점이 필요하다.
TRIANGLESTRIP는 정점 3개 단위로 삼각형을 그리지만, 여러개의 삼각형을 그릴 때 정점을 이어서 그리게 된다. 즉, 1개의 삼각형에서는 똑같이 3개의 정점이 필요하지만 2개의 삼각형을 그릴때 마지막 2개의 정점에서부터 새로운 1개의 정점으로 이어지게 삼각형이 그려지기 때문에 4개의 정점 정보만 있으면 된다.