본문 바로가기
Game DevTip/Direct X

0. Direct X 기초 이해하기 : SDK, 라이브러리, Dx역사.

by LIKE IT.라이킷 2025. 5. 21.

 

DirectX 기초 이해하기: SDK, 라이브러리, 그리고 DirectX의 역사

 

게임 및 3D 그래픽 프로그래밍에서 가장 중요한 위치를 차지하는 Direct X.

그런 다이렉트 X에 대해서 오늘은 알아보고자 한다. 

 

하지만 그전에 용어에 대해서 알아할 개념들이 몇가지 있다.

 

SDK 란 무엇인가?

기본적으로 다이렉트 X를 개발하는 사람들은 DX SDK를 사용한다. 

즉, SDK는(Software Development Kit)소프트웨어 개발 키트의 약자이다.

  • 정확한 정의 : SDK는 특정플랫폼, 운영체제, 또는 프로그래밍 언어를 위한 개발도구 모음.
  • SDK vs API : SDK는 API(Application Programing Interface)를 포함하는 더 큰 개념이다. 
    API는 소프트웨어 간의 통신 방법을 정의하는 인터페이스 일뿐이지만, SDK는 API 뿐만 아니라,
    개발에 필요한 컴파일러, 디버거, 문서, 샘플 코드 등을 모두 포함하고 있다. 
  • 즉, 개발자가 특정 플랫폼이나 기술을 쉽게 활용하게 도와주는 키트이다. 

 

라이브러리와 프레임워크의 차이

라이브러리는 특정 기능을 수행하는 함수나 클래스를 모아둔 코드 모음이다. 

개발자가 필요할 때 호출하여 사용하고 있는 놈. 

예를 들자면, DirectX SDK는 그래픽스, 사운드, 입력처리 등을 위한 다양한 라이브러리를 제공한다. 

 

반면, 프레임워크의 경우는 라이브러리보다 훨씬 더 구조화가 되어있다.

주로 애플리케이션의 기본 구조와 흐름을 제공하는데, 

개발자는 프레임워크가 정한 규칙에 따라 코드를 작성한다. 

 

라이브러리의 경우, "내가 라이브러리를 호출한다."라고 한다면,

프레임워크는 "프레임워크가 내 코드를 호출한다."라는 차이가 있다.

예를 들자면 .NET Framework, Qt, Unreal Engine의 경우가 그 예이다. 

 

즉, 라이브러리와 프레임 워크는 서로 다른 개념이고, 단순히 규모의 차이가 아니다. 

 

 

그렇다면 이제 다이렉트 X의 컴포넌트들에 대해서 한번 알아보자.

 

DirectX의 컴포넌트

  • Direct3D : 3D 그래픽 렌더링을 위한 컴포넌트(가장 유명)
  • Direct2D : 2D 그래픽 처리를 위한 컴포넌트로 DX10, 11부터 추가가 되었다. 
  • DirectWrite : 텍스트 렌더링을 위한 컴포넌트이다. 
  • DXGI : (DirectX Graphics Infrastructure)로, 그래픽카드와의 통신을 추상화한 컴포넌트.
  • DirectCompute : GPU를 이용한 병렬 계산을 위한 컴포넌트로, DX10, 11부터 추가가 되었다.
  • XAudio2 : 오디오 처리를 위한 컴포넌트이다.
  • DirectX Raytracing (DXR) :  광선 추적기술(DX12부터 제공)
  • DirectML : 머신러닝 지원(DX 12부터 지원)

Raytracing과 머신러닝은 DX 11에서는 제공하지 않는다.

 

 

DirectX역사

DirectX 8

  • 초기 3D 게임에 사용
  • 셰이더 모델 1.0, 1.1 지원

DirectX 9

  • 많은 레거시 게임들이 여전히 사용 중
  • 셰이더 모델 2.0, 3.0 도입
  • 픽셀 및 버텍스 셰이더 개선
  • 현재도 많은 게임에서 최소 사양으로 요구

DirectX 10

  • Windows Vista와 함께 출시
  • 통합된 셰이더 모델 4.0 도입
  • 지오메트리 셰이더 추가
  • DirectCompute 도입 (GPU 계산 지원)

DirectX 11

  • Windows 7과 함께 출시
  • 테셀레이션 셰이더 추가
  • 멀티스레딩 개선
  • Direct2D 통합
  • 셰이더 모델 5.0 도입
  • 지금도 많은 게임 개발에 사용

DirectX 12

  • Windows 10과 함께 출시
  • 저수준 API로 개발자에게 더 많은 제어권 제공
  • 멀티코어 CPU 최적화
  • DirectX Raytracing (DXR) 추가
  • DirectML 추가 (머신러닝 지원)
  • 더 효율적인 CPU 및 GPU 활용

 

그렇다면 이제 게임 개발에 사용할 프레임워크, 

즉 DirectX 기반 프레임워크는 어떻게 구성되는지 알아보자.

 

DirectX 프레임 워크 구조

기본적으로 다이렉트 X의 프레임워크 구조는 라이브러리 프로젝트, 테스트 실행 프로젝트, 도구 프로젝트로 나뉜다. 

 

라이브러리 프로젝트의 경우 기본적인 코어 기능을 구현한다. 

렌더링, 입력처리, 물리, 사운드등의 기능을 구현하여 있고, 

DLL또는 정적 라이브러리(.lib)의 형태로 컴파일이 된다. 

또한 재사용 가능한 컴포넌트가 포함되어 있어 

 

테스트 실행 프로젝트는 라이브러리를 활용한 실행 가능한 애플리케이션,

즉 그냥 게임 프로젝트이다. 유닛 테스트 및 데모를 제공하는 프로젝트이다. 

 

도구 프로젝트의 경우는 모델 에디터, 맵, 에디터 등의 개발을 지원하는 도구 프로젝트이다. 

공통 라이브러리를 활용하여 구축한다. 

 

해당 구조는 코드의 재사용성 및 유지보수성을 위해서 분리를 해놓은 것이다. 

 

DirectX 공부는 어떻게 시작할까?

일단 기본적으로 C++ 기초를 확실히 해야한다.

DX는 기본적으로 C++로 작성이 되므로 언어에 대한 이해도가 상당히 높아야 한다. 

또한 3D 수학공부는 기본으로 적어도 백터, 행렬, 사원수(쿼터니언), 선형대수학 등의 수학 개념을 알고 있어야 하며,

해당 개념들의 응용을 어느정도 할 수 있어야 개발 진행이 막히지 않을 것이다. 

 

이제 개발로는 단계적으로 접근 하자면, 

  1. 윈도우 생성 및 장치 초기화 같은 기본
  2. 단순한 도형 렌더링
  3. 텍스쳐와 라이팅 적용
  4. 이후 여타 고급기술 습득

해당 방법으로 공부해 나가는 것이 가장 일반적인 방법이다.

또는 공식 문서와 샘플 코드를 활용하는 것 또한 좋은 방법이다. 

 

https://learn.microsoft.com/en-us/windows/win32/directx

 

DirectX graphics and gaming - Win32 apps

For information on using DirectX in UWP apps, see Games and DirectX (UWP)

learn.microsoft.com

 

적어도 DX SDK에 포함된 샘플코드에 뭐가 있는지 정도는 살펴보자. 

 

결론

DX는 윈도우 환경에서 고성능 게임과 멀티미디어 애플리케이션을 개발할 때 매우 필수적인 도구이다. 

학습 곡석이 다소 가파르며, 준비 과정이 꽤나 난이도가 어렵긴 하지만, 그럼에도 불구하고 Vulkan 보다는 

문서가 잘 정리되어 공유되고 있으니 관련 자료들을 잘 찾아보길 바란다. 

 

초보 개발자로써는 DX11부터 개발을 하는 것이 정신건강에 좋을 것이다. 

DX12부터 개발을 하기에는 진입장벽이 너무 높기 때문.

적어도 DX11의 지식을 알고 있다면 DX12로 넘어가는데는 큰 문제는 없다. 

 

기본 렌더링 파이프라인과 개념을 이해한 뒤에 최신버전, 그리고 나중에 더 나아가

OpenGL, Vulkan, metalApi등으로 넘어가는 것이 좀 더 쉬울 것이다. 

 

해당 블로그에서 다이렉트 X 공부 포스트는 7월 초부터 진행될 예정이며,

DX11 로 개발을 진행할 것이므로 

 

visual studio 2017 , DX11.3 버전의 경우는 2019 버전까지 지원하니

최신버전인 2022말고 위에 해당 버전을 깔고서 진행하길 권장한다. 

반응형

댓글