Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Archives
Today
Total
관리 메뉴

codingfarm

4. 기능 수준(feature level) 본문

computer graphics/DX12 book

4. 기능 수준(feature level)

scarecrow1992 2021. 1. 11. 21:38

기능수준은 Direct3D 11에서 도입되었다. 코드에서 D3D_FEATURE_LEVEL 이라는 열거형으로 대표되는 이 기능 수준은 대략적으로 버전 9에서 11까지의 여러 Direct3D 버전들에 대응된다.

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
} ;

기능 수준들은 GPU가 지원하는 기능들의 엄격한 집합을 정의한다(각 기능들이 지원하는 구체적인 내용은 SDK를 참고). 예를들어 기능 수준 11을 지원하는 GPU는 반드시 Direct3D 11의 기능 집합 전체를 지원해야 한다. 

 

이러한 기능 수준은 응용 프로그램 개발을 편하게 해주는 요인이다. 현재 GPU의 기능 수준을 파악하기만 하면, 구체적으로 어떤 기능을 사용할 수 있는지를 확실히 알 수 있기 때문이다.

 

사용자의 하드웨어가 특정 기능 수준을 지원하지 않는 경우 응용 프로그램이 실행을 아예 포기하는 대신 더 낮은 기능 수준으로 후퇴하는 전략을 사용할 수도 있다.

예를들어 Direct3D 12를 지원하는지 점검하고, 아니라면 11로 9.3으로... 내려가면서 지원되는 버전중 제일 최신의 것을 적용하도록 한다.

이후 포스팅에서는 D3D_FEATURE_LEVEL_11_0을 최소한의 필수 기능 수준으로 두지만, 실제 응용 프로그램의 경우 사용자층을 최대화하기 위해 구형 하드웨어의 지원에도 신경을 써야한다.

Comments