반응형
입력 조립 단계 Input Assembler Stage
목적
1. 정점 버퍼로부터 정점 데이터(프리미티브 데이터)를 다른 파이프라인 단계에서 사용할 프리미티브로 조립
2. 시스템 생성 값 추가 -> 시맨틱
시스템 생성 값 : 프리미티브 ID, 인스턴스 ID, 정점 ID
과정
1. 입력버퍼(정점 버퍼 또는 인덱스 버퍼) 객체를 생성
2. 입력 레이아웃 객체 생성. 입력 레이아웃 객체는 정점 버퍼의 한 원소의 구조를 나타낸다.
3. 입력 버퍼와 입력 레이아웃 객체를 입력 조립 단계에 연결한다.
4. 프리미티브 유형을 지정한다. 입력 조립단계는 입력 데이터를 이 프리미티브로 조립한다.
5. 그리기 함수를 호출한다. 입력 조립 단계는 조립한 데이터와 시스템 생성값을 Direct3D 파이프라인으로 전달한다.
주요 함수
CreateInputLayout
HRESULT CreateInputLayout(
[in] const D3D11_INPUT_ELEMENT_DESC *pInputElementDescs,
[in] UINT NumElements,
[in] const void *pShaderBytecodeWithInputSignature,
[in] SIZE_T BytecodeLength,
[out, optional] ID3D11InputLayout **ppInputLayout
);
1. const D3D11_Input_ELEMENT_DESC* : 입력 어셈블리 단계 입력 데이터 형식의 배열
2. UINT : int-elements 배열의 입력 데이터 형식 수
3. const void* : 컴파일된 세이더에 대한 포인터
4. Size_t : 컴파일된 셰이더 크기
5. ID3D11InputLayout** 생성된 입력 레이아웃 개체에 대한 포인터
사용 예시
D3D11_INPUT_ELEMENT_DESC layout[] =
{
{ "POSITION", 0, DXGI_FORMAT_R32G32B32_FLOAT, 0, 0, D3D11_INPUT_PER_VERTEX_DATA, 0 },
{ "COLOR", 0, DXGI_FORMAT_R32G32B32A32_FLOAT, 0, 12, D3D11_INPUT_PER_VERTEX_DATA, 0 },
};
Device->CreateInputLayout(layout, ARRAYSIZE(layout),
vertexshaderCSO->GetBufferPointer(), vertexshaderCSO->GetBufferSize(), &SimpleInputLayout);
IASetInputLayout
void IASetInputLayout(
[in, optional] ID3D11InputLayout *pInputLayout
);
1. ID3D11InputLayout* : IA 단계에서 읽을 입력 버퍼를 설명하는 입력 레이아웃 개체
사용 예시
DeviceContext->IASetInputLayout(SimpleInputLayout);
IASetPrimitiveTopology
void IASetPrimitiveTopology(
[in] D3D11_PRIMITIVE_TOPOLOGY Topology
);
1. D3D11_PRIMITIVE_TOPOLOGY : 기본 데이터의 기본 형식 및 순서
사용 예시
DeviceContext->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
typedef enum D3D11_PRIMITIVE_TOPOLOGY {
D3D11_PRIMITIVE_TOPOLOGY_UNDEFINED = 0,
D3D11_PRIMITIVE_TOPOLOGY_POINTLIST = 1,
D3D11_PRIMITIVE_TOPOLOGY_LINELIST = 2,
D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP = 3,
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST = 4,
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP = 5,
D3D11_PRIMITIVE_TOPOLOGY_LINELIST_ADJ = 10,
D3D11_PRIMITIVE_TOPOLOGY_LINESTRIP_ADJ = 11,
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST_ADJ = 12,
D3D11_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP_ADJ = 13,
D3D11_PRIMITIVE_TOPOLOGY_1_CONTROL_POINT_PATCHLIST = 33,
D3D11_PRIMITIVE_TOPOLOGY_2_CONTROL_POINT_PATCHLIST = 34,
D3D11_PRIMITIVE_TOPOLOGY_3_CONTROL_POINT_PATCHLIST = 35,
D3D11_PRIMITIVE_TOPOLOGY_4_CONTROL_POINT_PATCHLIST = 36,
D3D11_PRIMITIVE_TOPOLOGY_5_CONTROL_POINT_PATCHLIST = 37,
D3D11_PRIMITIVE_TOPOLOGY_6_CONTROL_POINT_PATCHLIST = 38,
D3D11_PRIMITIVE_TOPOLOGY_7_CONTROL_POINT_PATCHLIST = 39,
D3D11_PRIMITIVE_TOPOLOGY_8_CONTROL_POINT_PATCHLIST = 40,
D3D11_PRIMITIVE_TOPOLOGY_9_CONTROL_POINT_PATCHLIST = 41,
D3D11_PRIMITIVE_TOPOLOGY_10_CONTROL_POINT_PATCHLIST = 42,
D3D11_PRIMITIVE_TOPOLOGY_11_CONTROL_POINT_PATCHLIST = 43,
D3D11_PRIMITIVE_TOPOLOGY_12_CONTROL_POINT_PATCHLIST = 44,
D3D11_PRIMITIVE_TOPOLOGY_13_CONTROL_POINT_PATCHLIST = 45,
D3D11_PRIMITIVE_TOPOLOGY_14_CONTROL_POINT_PATCHLIST = 46,
D3D11_PRIMITIVE_TOPOLOGY_15_CONTROL_POINT_PATCHLIST = 47,
D3D11_PRIMITIVE_TOPOLOGY_16_CONTROL_POINT_PATCHLIST = 48,
D3D11_PRIMITIVE_TOPOLOGY_17_CONTROL_POINT_PATCHLIST = 49,
D3D11_PRIMITIVE_TOPOLOGY_18_CONTROL_POINT_PATCHLIST = 50,
D3D11_PRIMITIVE_TOPOLOGY_19_CONTROL_POINT_PATCHLIST = 51,
D3D11_PRIMITIVE_TOPOLOGY_20_CONTROL_POINT_PATCHLIST = 52,
D3D11_PRIMITIVE_TOPOLOGY_21_CONTROL_POINT_PATCHLIST = 53,
D3D11_PRIMITIVE_TOPOLOGY_22_CONTROL_POINT_PATCHLIST = 54,
D3D11_PRIMITIVE_TOPOLOGY_23_CONTROL_POINT_PATCHLIST = 55,
D3D11_PRIMITIVE_TOPOLOGY_24_CONTROL_POINT_PATCHLIST = 56,
D3D11_PRIMITIVE_TOPOLOGY_25_CONTROL_POINT_PATCHLIST = 57,
D3D11_PRIMITIVE_TOPOLOGY_26_CONTROL_POINT_PATCHLIST = 58,
D3D11_PRIMITIVE_TOPOLOGY_27_CONTROL_POINT_PATCHLIST = 59,
D3D11_PRIMITIVE_TOPOLOGY_28_CONTROL_POINT_PATCHLIST = 60,
D3D11_PRIMITIVE_TOPOLOGY_29_CONTROL_POINT_PATCHLIST = 61,
D3D11_PRIMITIVE_TOPOLOGY_30_CONTROL_POINT_PATCHLIST = 62,
D3D11_PRIMITIVE_TOPOLOGY_31_CONTROL_POINT_PATCHLIST = 63,
D3D11_PRIMITIVE_TOPOLOGY_32_CONTROL_POINT_PATCHLIST = 64
} D3D11_PRIMITIVE_TOPOLOGY;
반응형
'DirectX 11' 카테고리의 다른 글
Direct X 11 Vertex Shader Stage (0) | 2025.08.01 |
---|---|
Direct X 11 기초 개념 학습 (2) | 2025.08.01 |
Direct X 11 1일차 (0) | 2024.04.30 |