Direct X 11 Input Assembler Stage

2025. 8. 1. 15:14·DirectX 11
반응형

입력 조립 단계 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
'DirectX 11' 카테고리의 다른 글
  • Direct X 11 Vertex Shader Stage
  • Direct X 11 기초 개념 학습
  • Direct X 11 1일차
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (302)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (49)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
Direct X 11 Input Assembler Stage
상단으로

티스토리툴바