DX11 파이프라인 - IA
IA(Input Assembler)는 넘겨받은 버텍스 버퍼, 인덱스 버퍼의 데이터를 읽어 지시받은 도형으로 조합하여 파이프라인의 다음 스테이지로 데이터를 넘긴다.
- IA에 세트하는 데이터들
InputLayOut은 입력된 데이터를 어떻게 해석할지를 정한다.
D3D11_INPUT_ELEMENT_DESC에 내용을 작성. CreateInputLayOut()을 통해 실체화. IASetInputLayOut()으로 세트.
버퍼 리소스는 입력되는 정점, 색인 정보를 담은 버퍼.
D3D11_BUFFER_DESC에 내용을 작성 CreateBuffer()로 버텍스, 인덱스 버퍼 실체화. IASetVertexBuffer(), IASetIndexBuffer()로 IA에 전달.
PrimitiveTopology는 입력된 데이터를 어떤 도형으로 조합될지. (점, 선, 삼각형 등)
별도의 실체화 과정 없이 D3D_PRIMITIVE_TOPOLOGY의 열거값을 IASetPrimitiveTopology()로 곧바로 세트한다.
IA에는 여러개의 입력 슬롯이 있어 슬롯 개수만큼의 버텍스 버퍼를 설정할 수 있다. 이는 피쳐 레벨에 따라 다름. (10.0이하는 16개 10.1,11에서는 32개)
인덱스 버퍼는 한개밖에 설정할 수 없으니 주의.
렌더링 파이프라인이 올바르게 동작하려면 IA에 입력될 데이터 구조와 버텍스셰이더에 입력될 구조가 같아야 한다.
일치를 판단하기 위해 버텍스 셰이더의 입력 정보가 필요. 이는 컴파일 된 버텍스 셰이더 개체의 바이트 코드에 포함되어있다. 그러므로 IA를 생성하는 코드의 형태는
CreateInputLayout(
인풋 속성 데스크,
데스크가 몇칸인지 크기,
버텍스버퍼 포인터,
버텍스 버퍼 크기,
인풋 레이아웃 아웃풋 포인터);