다음을 통해 공유


IDXGISwapChain::P resent 메서드(dxgi.h)

렌더링된 이미지를 사용자에게 표시합니다.

구문

HRESULT Present(
  UINT SyncInterval,
  UINT Flags
);

매개 변수

SyncInterval

형식: UINT

프레임의 프레젠테이션을 세로 공백과 동기화하는 방법을 지정하는 정수입니다.

비트 블록 전송(비트블렛) 모델(DXGI_SWAP_EFFECT_DISCARD 또는 DXGI_SWAP_EFFECT_SEQUENTIAL)의 경우 값은 다음과 같습니다.

  • 0 - 프레젠테이션이 즉시 발생하며 동기화가 없습니다.
  • 1~4 - n번째 세로 공백 이후에 프레젠테이션을 동기화합니다.
대칭 이동 모델(DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL)의 경우 값은 다음과 같습니다.
  • 0 - 이전에 제공된 프레임의 남은 시간을 취소하고 최신 프레임이 대기 중인 경우 이 프레임을 삭제합니다.
  • 1~4 - n 개 이상의 세 로 공백에 대해 프레젠테이션을 동기화합니다.
동기화 간격 값이 대칭 이동 프레젠테이션 큐에 미치는 영향을 보여 주는 예제는 비고를 참조하세요.

업데이트 영역이 둘 이상의 출력(각각 IDXGIOutput으로 표시됨)에 걸쳐 있는 경우 Present 는 대상 창의 클라이언트 영역 중 가장 큰 하위 사각형을 포함하는 출력에 대한 동기화를 수행합니다.

Flags

형식: UINT

스왑 체인 프레젠테이션 옵션이 포함된 정수 값입니다. 이러한 옵션은 DXGI_PRESENT 상수로 정의됩니다.

반환 값

형식: HRESULT

가능한 반환 값은 S_OK, DXGI_ERROR_DEVICE_RESET 또는 DXGI_ERROR_DEVICE_REMOVED(DXGI_ERROR 참조), DXGI_STATUS_OCCLUDED( DXGI_STATUS 참조) 또는 D3DDDIERR_DEVICEREMOVED.

참고Present 메서드는 컴퓨터에서 비디오 카드 물리적으로 제거되었거나 비디오 카드 대한 드라이버 업그레이드가 발생한 경우 DXGI_ERROR_DEVICE_REMOVED 또는 D3DDDIERR_DEVICEREMOVED 반환할 수 있습니다.
 

설명

Direct3D 11.1부터는 스왑 체인 프레젠테이션에서 더티 사각형과 스크롤 사각형을 사용할 수 있으므로 IDXGISwapChain1::P resent1을 사용하는 것이 좋습니다. 따라서 메모리 대역폭을 줄이고 결과적으로 시스템 전원을 줄입니다. 스왑 체인 프레젠테이션에서 더티 사각형 및 스크롤 사각형을 사용하는 방법에 대한 자세한 내용은 스왑 체인 프레젠테이션에서 더티 사각형 및 스크롤 사각형 사용을 참조하세요.

전체 화면 애플리케이션에서 스왑 체인 버퍼를 뒤집을 때 최상의 성능을 보려면 전체 화면 애플리케이션 성능 힌트를 참조하세요.

Present를 호출하면 렌더링 스레드가 메시지 펌프 스레드에서 대기할 수 있으므로 여러 스레드를 사용하는 애플리케이션에서 이 메서드를 호출할 때는 주의해야 합니다. 자세한 내용은 다중 스레딩 고려 사항을 참조하세요.

Direct3D 9와 Direct3D 10의 차이점:

Flags 매개 변수에서 DXGI_PRESENT_TEST 지정하는 것은 Direct3D 9의 IDirect3DDevice9::TestCooperativeLevel과 유사합니다.

DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL 또는 DXGI_SWAP_EFFECT_DISCARD 값 집합을 사용하여 만든 대칭 이동 프레젠테이션 모델 스왑 체인의 경우 Flags 매개 변수에서 DXGI_PRESENT_DO_NOT_SEQUENCE플래그를 전달하는 경우를 제외하고 성공적인 프레젠테이션은 그래픽 파이프라인에서 버퍼 0(일반적으로 OMSetRenderTargets로 설정됨)을 바인딩 해제합니다.

화면에 콘텐츠를 표시할 때 데이터 값이 어떻게 변경되는지에 대한 자세한 내용은 색 공간에 대한 데이터 변환을 참조하세요.

프레젠테이션 모델 대칭 이동 큐

동기화 간격 값이 있는 다음 프레임이 Present를 호출하기 전에 가장 오래된(A)에서 최신(E)로 큐에 대기한다고 가정합니다.

A: 3, B: 0, C: 0, D: 1, E: 0

Present를 호출하면 런타임에 프레임 A가 세로 공백 간격 1에 대해서만 표시됩니다. 런타임은 프레임 B의 동기화 간격 0으로 인해 프레임 A를 일찍 종료합니다. 그런 다음 런타임은 세로 간격 1의 프레임 D를 표시한 다음, 새 프레젠테이션을 제출할 때까지 E 프레임을 표시합니다. 런타임은 프레임 B 및 C를 삭제합니다.

가변 새로 고침 빈도 표시

가변 새로 고침 빈도 표시의 요구 사항으로, 찢기 기능을 사용할 수 있습니다. CheckFeatureSupport 메서드를 사용하여 이 기능을 사용할 수 있는지 확인하고 필요한 플래그를 설정하려면 DXGI_PRESENT_ALLOW_TEARINGDXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING 대한 설명을 참조하고 변수 새로 고침 빈도를 표시합니다.

요구 사항

요구 사항
대상 플랫폼 Windows
헤더 dxgi.h
라이브러리 DXGI.lib

추가 정보

IDXGISwapChain