DXGI_MODE_SCANLINE_ORDER, DXGI_MODE_SCALING의 Flags 종류

프로그래밍/DirectX

DXGI_MODE_SCANLINE_ORDER

 

1
2
3
4
5
6
typedef enum DXGI_MODE_SCANLINE_ORDER { 
  DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED        = 0,
  DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE        = 1,
  DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST  = 2,
  DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST  = 3
} DXGI_MODE_SCANLINE_ORDER;
cs
  • DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED
    Scanline order is unspecified.

  • DXGI_MODE_SCANLINE_ORDER_PROGRESSIVE
    The image is created from the first scanline to the last without skipping any.

  • DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST
    The image is created beginning with the upper field.

  • DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST
    The image is created beginning with the lower field.

 

디스플레이에 화면을 그릴 때, 스캔라인 순서를 지정한다.

스캔라인 순서로 화면을 그릴 때 프로그레시브(Progressive)로 그리는가, 인터레이스(Interlace)로 그리는가를 설정할 수 있다.

 

DXGI_MODE_SCANLINE_ORDER_PROGRESSSIVE를 선택하면 프로그레시브(Progressive)로 그리게 된다.

DXGI_MODE_SCANLINE_ORDER_UPPER_FIELD_FIRST를 선택하면 인터레이스(Interlace)로 그리면서 홀수번째 줄에서,

DXGI_MODE_SCANLINE_ORDER_LOWER_FIELD_FIRST를 선택하면 짝수번째 줄에서부터 시작한다.

DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED를 선택하면 아무런 스캔라인 순서를 설정하지 않게 되는데, 이게 결과적으로 디스플레이에 맞춰서 자동적으로 선택을 하는건지 어떻게 되는건지 전혀 모르겠다. 정보가 안보인다.

 

프로그레시브(Progressive)와 인터레이스(Interlace)에 관한 내용은 아래의 링크를 참조.

 

https://m.cafe.daum.net/korea-man/7v20/84?

 

프로그레시브(Progresive)와 인터레이스(Interlace)는 어떻게 틀립니까?

TV나 모니터와 같은 디스플레이 기기를 스캔해 주는 방식을 뜻합니다. 인터레이스는 주사선을 한 칸씩 건너 뛰어서 2회 스캐닝한다고 하여 우리말로는 비월주사 방식이라고 하며, 프로그레시브는 건너뜀 없이 모든 주사선을 스캐닝해 줍니다. 일반적으로 TV는 주로 동영상을 보여주므로 비월주사를 하더라도 인간의 눈으로는 구분이 되지 않기 때문에

m.cafe.daum.net

https://hruj.tistory.com/entry/m3

 

3. 인터레이스란 무엇일까 (인터레이스 프로그레시브 풀다운 IVTC)

인터레이스와 프로그래시브가 뭘까요... 요즘 hd 티비 구매를 고려 하시거나 dvd 몇번 다뤄보신분은 익숙하실거 같은데요 음... 인터레이스에 대한 이야기는 또 티비라는 매체가 대중화 될수 있을까를 논하던 시대..

hruj.tistory.com

 

 

 

DXGI_MODE_SCALING

 

1
2
3
4
5
typedef enum DXGI_MODE_SCALING { 
  DXGI_MODE_SCALING_UNSPECIFIED  = 0,
  DXGI_MODE_SCALING_CENTERED     = 1,
  DXGI_MODE_SCALING_STRETCHED    = 2
} DXGI_MODE_SCALING;
cs
  • DXGI_MODE_SCALING_UNSPECIFIED
    Unspecified scaling.

  • DXGI_MODE_SCALING_CENTERED
    Specifies no scaling. The image is centered on the display. This flag is typically used for a fixed-dot-pitch display (such as an LED display).

  • DXGI_MODE_SCALING_STRETCHED
    Specifies stretched scaling.

 

디스플레이의 비례에 따른 처리를 지정한다.

화면을 늘리거나 줄이거나, 전체화면을 하는 등 후면버퍼와의 비례차가 생길 때 어떻게 하는가에 대한 옵션이다.

 

DXGI_MODE_SCALING_UNSPECIFIED를 선택하면 아무런 설정도 하지 않는다.

DXGI_MODE_SCALING_CENTERED를 선택하면 스케일링을 하지 않고, 이미지가 디스플레이의 정 중앙에 위치하게 된다. 그리고 비례에 맞춰서 화면의 좌우/상단을 잘라내서 검은색 패딩으로 채운다.

DXGI_MODE_SCALING_STRETCHED를 선택하면 확장 스케일링을 지정한다.

 

DXGI_MODE_SCALING_CENTERED를 선택한 경우는 다른 두개의 옵션과는 명확하게 다른 결과가 나왔다. 하지만, UNSPECIFIED와 STRETCHED의 차이는 아직 잘 모르겠다. 추후 이미지를 띄워보고 살펴봐야 할 것 같다.

 

추가로, Alt+Enter 를 눌러서 전체화면을 할 경우 UNSPECIFIED는 바로 화면이 뜨는 반면 CENTERED/STRETCHED는 화면이 뜨기까지의 잠시 텀이 있는 등 스케일링 옵션을 처리하기 위해서인지 반응이 조금 느리다.