기능 수준(Feature Level) : Direct3D

개발하는 곰댕이·2023년 3월 14일
0

DirectX

목록 보기
1/8

Direct3D 11에서부터 도입된 Feature Level은 GPU가 지원하는 기능의 Level을 나타내는 지표로서 사용된다.
코드 내부에서는 D3D_FEATURE_LEVEL이라는 enum을 사용하는데 다음과 같이 정의되어 있다.

typedef enum D3D_FEATURE_LEVEL {
  D3D_FEATURE_LEVEL_1_0_CORE,
  D3D_FEATURE_LEVEL_9_1,
  D3D_FEATURE_LEVEL_9_2,
  D3D_FEATURE_LEVEL_9_3,
  D3D_FEATURE_LEVEL_10_0,
  D3D_FEATURE_LEVEL_10_1,
  D3D_FEATURE_LEVEL_11_0,
  D3D_FEATURE_LEVEL_11_1,
  D3D_FEATURE_LEVEL_12_0,
  D3D_FEATURE_LEVEL_12_1,
  D3D_FEATURE_LEVEL_12_2
} ;

이 녀석을 사용하는 이유는 다음과 같다.
우리가 만드는 프로그램이 어떤 기능을 사용할 때 해당 기능이 어떤 GPU에서는 지원하지 않는 기능일 수 있기에 ‘이 프로그램을 사용하기 위해서는 최소한 이정도의 기능은 갖고 있어야 한다!’ 라고 지정해주는 것이다.

이 개념은 Direct3D를 초기화 할 때 사용되며 응용 프로그램은 높은 수준에서 낮은 수준으로 Level을 점검하며 마지막에는 우리가 지정한 최소 Level까지 점검하고 해당 Level까지 지원하지 않는다면 장치 초기화가 실패하게 될 것이다.

그렇기 때문에 만약 게임을 만든다고 한다면 어디까지의 기능을 사용 할 것인지, 어디까지의 사용자까지 고려하여 프로그램을 만들 것 인지 생각해야한다.

참고 자료
Feature levels in Direct3D
Direct3D feature levels
D3D_FEATURE_LEVEL enumeration (d3dcommon.h)


  • DirectX 12를 이용한 3D 게임 프로그래밍 입문

0개의 댓글