At a Glance
text
POINTLIST -> vertex 1개마다 point
LINELIST -> vertex 2개마다 독립 line
LINESTRIP -> 앞 vertex를 이어 line
TRIANGLELIST -> vertex/index 3개마다 독립 triangle
TRIANGLESTRIP -> 앞 두 vertex를 재사용해 triangle 연결
PATCHLIST -> hull/domain shader tessellation 입력일반 mesh는 D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST가 가장 직접적입니다. Topology는 buffer 안의 값을 바꾸지 않고 Input Assembler가 묶어 읽는 규칙을 바꿉니다.
List와 Strip
Triangle strip은 index 수를 줄일 수 있지만 winding이 교대로 바뀌고 mesh 분리·culling·cache 최적화가 복잡해질 수 있습니다. 현대 indexed triangle list가 도구와 mesh pipeline에서 흔한 기본값입니다.
Adjacency topology는 geometry shader에서 인접 primitive 정보가 필요할 때 사용합니다. 일반 draw에 켜면 기대한 index layout과 달라집니다.
Patch topology는 control point 수가 이름에 포함되며 hull shader와 domain shader가 연결되어야 합니다.
자주 틀리는 점
- Triangle list의 vertex count가 3의 배수가 아니면 남는 vertex는 primitive를 만들지 못합니다.
- Line topology로 bind된 상태가 다음 mesh draw에 남지 않게 합니다.
- Strip restart와 degenerate triangle 전략은 feature와 index format을 확인합니다.
- Topology 오류로 화면이 비는 경우 shader보다 IA state를 먼저 확인합니다.
참고 링크
1 sources