GameChoi
Choi Programming
GameChoi
전체 방문자
오늘
어제
  • 분류 전체보기 (468)
    • C++ Algorithm & Study (184)
      • C++ & Algorithm Strategies (45)
      • Game Math & DirectX 11 (72)
      • Server + UE5 (29)
      • Lyra Clone Coding (37)
    • Create Game (284)
      • [Window API] Game Client & .. (55)
      • [DirectX] DirectX 2D & 3D (155)
      • [UE5] BLUEPRINT & C++ (74)
    • odds and ends (0)
      • English (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • job queue
  • client
  • Game Server
  • c++
  • protobuf
  • Game Room
  • Network Worker
  • session
  • Destination Move Packet
  • RPG Game
  • UE5
  • Direct11
  • server
  • Player Move Packet
  • core
  • GAME Client
  • Player State
  • Direct3D
  • Other Character
  • Algorithm Strategies

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
GameChoi

Choi Programming

[Direct11] 2. Direct3D initialization
C++ Algorithm & Study/Game Math & DirectX 11

[Direct11] 2. Direct3D initialization

2023. 6. 12. 17:49

1. Direct3D

1.1 Direct3D initialization

1.1.1 Device & Device Context Create

 - Direct3D의 주된 인터페이스로 물리적인 그래픽 장치 하드웨어에 대한 소프트웨어 제어기

   - 응용 프로그램은 이 인터페이스들을 통해 하드웨어에게 할 일을 지시

     - GPU 메모리 자원 할당, Back Buffer 지우기, 자원을 여러 파이프라인 단계에 묶기, 기하구조 그리기 등

ComPtr<ID3D11Device> _device; ComPtr<ID3D11DeviceContext> _deviceContext;

 - Device Interface → 기능 지원 점검과 자원 할당

 - Device Context Interface → 렌더 대상을 결정, 자원을 그래픽 파이브라인에 묶고 GPU가 수행할 렌더링 명령 지시

1.1.2 Swap Chain Setting & Create

 - Device를 초기화 한 후 Swap Chain을 생성하기 위해 DXGI_SWAP_CHAIN_DESC 구조체 인스턴스를 만듦

   - 만든 구조체 인스턴스를 이용하여 특성 설정

ComPtr<IDXGISwapChain> _swapChain;

 - 위에서 생성한 구조체를 이용하여 함수를 호출하여 Swap Chain Interface 생성

1.1.3 Render Target View

 - 자원을 파이프라인의 단계에서 직접 묶는 것이 아닌 자원에 대한 View를 생성하고 그 View를 묶어야 함

   - Back Buffer를 OM단계에서 묶으려면 Back Buffer에 대한 Render Target View를 생성

ComPtr<ID3D11RenderTargetView> _renderTargetView;

1.1.4 Depth & Stencil Buffer, View

 - Depth Buffer는 깊이 정보를 담는 2차원 Texture, Stencil Buffer 또한 스텐실 정보를 담는 2차원 Texture

   - 2차원 Texture를 생성할 때 사용하는 구조체를 채우고 함수를 호출해 Texture 생성

ComPtr<ID3D11Texture2D> _depthStencilBuffer;

 - Depth & Stencil View를 사용하기 위해 파이프라인에 붙임

   - Back Buffer에서 사용한 방식 그대로 Render Target View를 이용하여 View 생성

    - Texture에 초기 자료를 가르키는 포인터는 Depth & Stencil Buffer로 사용할 것이므로 채울 필요X

      - 깊이 버퍼링 및 스텐실 연산을 수행할 때는 Direct3D가 직접 Depth & Stencil Buffer를 기록

ComPtr<ID3D11DepthStencilView>  _depthStencilView;

 - 위의 방식을 통해 Depth & Stencil Buffer, View를 생성하였으므로 OM 단계에 묶음

_deviceContext->OMSetRenderTargets(1, _renderTargetView.GetAddressOf(), _depthStencilView.Get());

1.1.5 Viewport

 - 3차원 장면을 Back Buffer 전체에 그리지만 일부를 차지하는 직사각형 영역에만 그리는 것도 가능

   - 장면을 그려 넣고자 하는 Back Buffer의 부분 직사각형 영역을 Viewport

     - 원하는 구조체를 생성한 후 함수를 이용하여 Direct3D에게 Viewport를 알림 (RSSetViewports)

D3D11_VIEWPORT _viewport;

 - 2인용 모드를 위해 화면을 분할하는 경우

   - 화면 왼쪽 절반을 위한 Viewport & 화면 오른쪽 절반을 위한 Viewport 생성

     - 플레이어 2명의 관점에서 보는 장면을 Viewport에 그림

 - 또한 인터페이스로도 사용할 수 있음

저작자표시 (새창열림)

'C++ Algorithm & Study > Game Math & DirectX 11' 카테고리의 다른 글

[Direct11] 4. Rendering Pipeline - Input Assembler (IA)  (0) 2023.06.13
[Direct11] 3. Direct3D EX Application Framework  (0) 2023.06.12
[Direct11] 1. Direct3D Basic Knowledge  (0) 2023.06.12
[GameMath] 24. Intersection # Triangle to Point  (0) 2023.04.22
[GameMath] 23. Ray Cast # Ray to Plane  (0) 2023.04.22
    'C++ Algorithm & Study/Game Math & DirectX 11' 카테고리의 다른 글
    • [Direct11] 4. Rendering Pipeline - Input Assembler (IA)
    • [Direct11] 3. Direct3D EX Application Framework
    • [Direct11] 1. Direct3D Basic Knowledge
    • [GameMath] 24. Intersection # Triangle to Point
    GameChoi
    GameChoi

    티스토리툴바