D3DPRESENT_PARAMETERS 구조체

프레젠테이션 매개 변수에 대해 설명합니다.

구문

typedef struct D3DPRESENT_PARAMETERS {
  UINT                BackBufferWidth;
  UINT                BackBufferHeight;
  D3DFORMAT           BackBufferFormat;
  UINT                BackBufferCount;
  D3DMULTISAMPLE_TYPE MultiSampleType;
  DWORD               MultiSampleQuality;
  D3DSWAPEFFECT       SwapEffect;
  HWND                hDeviceWindow;
  BOOL                Windowed;
  BOOL                EnableAutoDepthStencil;
  D3DFORMAT           AutoDepthStencilFormat;
  DWORD               Flags;
  UINT                FullScreen_RefreshRateInHz;
  UINT                PresentationInterval;
} D3DPRESENT_PARAMETERS, *LPD3DPRESENT_PARAMETERS;

멤버

BackBufferWidth

형식: UINT

새 스왑 체인의 백 버퍼 너비(픽셀)입니다. WindowedFALSE(프레젠테이션이 전체 화면)인 경우 이 값은 EnumAdapterModes를 통해 찾은 열거형 디스플레이 모드 중 하나의 너비와 같아야 합니다. WindowedTRUE이고 BackBufferWidth 또는 BackBufferHeight가 0이면 hDeviceWindow의 클라이언트 영역(또는 hDeviceWindowNULL인 경우 포커스 창)의 해당 차원이 수행됩니다.

BackBufferHeight

형식: UINT

새 스왑 체인의 백 버퍼 높이(픽셀)입니다. WindowedFALSE인 경우(프레젠테이션이 전체 화면임) 이 값은 EnumAdapterModes를 통해 찾은 열거형 디스플레이 모드 중 하나의 높이와 같아야 합니다. WindowedTRUE이고 BackBufferWidth 또는 BackBufferHeight가 0이면 hDeviceWindow의 클라이언트 영역(또는 hDeviceWindowNULL인 경우 포커스 창)의 해당 차원이 수행됩니다.

BackBufferFormat

형식: D3DFORMAT

백 버퍼 형식입니다. 형식에 대한 자세한 내용은 D3DFORMAT를 참조하세요. 이 값은 CheckDeviceType에서 유효성을 검사한 렌더링 대상 형식 중 하나여야 합니다. GetDisplayMode를 사용하여 현재 형식을 가져올 수 있습니다.

실제로 창 모드에서 BackBufferFormat 에 대해 D3DFMT_UNKNOWN 지정할 수 있습니다. 이렇게 하면 런타임에 현재 디스플레이 모드 형식을 사용하도록 지시하고 GetDisplayMode를 호출할 필요가 없습니다.

창이 있는 애플리케이션의 경우 하드웨어에서 색 변환을 수행할 수 있으므로(하드웨어에서 색 변환을 지원하는 경우) 백 버퍼 형식이 더 이상 디스플레이 모드 형식과 일치하지 않아도 됩니다. 가능한 백 버퍼 형식 집합은 제한되지만 런타임에서는 유효한 백 버퍼 형식을 데스크톱 형식으로 표시할 수 있습니다. (데스크톱에서 디바이스를 작동할 수 있어야 하는 추가 요구 사항이 있습니다. 디바이스는 일반적으로 픽셀 모드당 8비트에서 작동하지 않습니다.)

전체 화면 애플리케이션은 색 변환을 수행할 수 없습니다.

BackBufferCount

형식: UINT

이 값은 0에서 D3DPRESENT_BACK_BUFFERS_MAX 사이일 수 있습니다(또는 Direct3D 9Ex를 사용하는 경우 D3DPRESENT_BACK_BUFFERS_MAX_EX ). 값 0은 1로 처리됩니다. 백 버퍼 수를 만들 수 없는 경우 런타임은 메서드 호출에 실패하고 이 값을 만들 수 있는 백 버퍼 수로 채웁니다. 따라서 애플리케이션은 동일한 D3DPRESENT_PARAMETERS 구조로 메서드를 두 번 호출하고 두 번째로 작동할 것으로 예상할 수 있습니다.

하나의 백 버퍼를 만들 수 없는 경우 메서드가 실패합니다. BackBufferCount 값은 허용되는 스왑 효과 집합에 영향을 줍니다. 특히 D3DSWAPEFFECT_COPY 스왑 효과를 사용하려면 정확히 하나의 백 버퍼가 있어야 합니다.

MultiSampleType

형식: D3DMULTISAMPLE_TYPE

D3DMULTISAMPLE_TYPE 열거형 형식의 멤버입니다. SwapEffect가 D3DSWAPEFFECT_DISCARD 설정되지 않은 경우 값은 D3DMULTISAMPLE_NONE 합니다. 다중 샘플링은 스왑 효과가 D3DSWAPEFFECT_DISCARD 경우에만 지원됩니다.

MultiSampleQuality

형식: DWORD

품질 수준. 유효한 범위는 CheckDeviceMultiSampleType에서 사용하는 pQualityLevels에서 반환된 수준보다 0에서 1 사이입니다. 더 큰 값을 전달하면 오류 D3DERR_INVALIDCALL 반환됩니다. 렌더링 대상 또는 깊이 스텐실 표면 및 D3DMULTISAMPLE_TYPE 쌍을 이루는 값이 일치해야 합니다.

SwapEffect

형식: D3DSWAPEFFECT

D3DSWAPEFFECT 열거형 형식의 멤버입니다. 런타임은 버퍼 스왑 동작과 관련된 암시적 의미 체계를 보장합니다. 따라서 WindowedTRUE 이고 SwapEffect 가 D3DSWAPEFFECT_FLIP 설정된 경우 런타임은 하나의 추가 백 버퍼를 만들고 프레젠테이션 시 전면 버퍼가 되는 버퍼를 복사합니다.

D3DSWAPEFFECT_COPY BackBufferCount 를 1로 설정해야 합니다.

D3DSWAPEFFECT_DISCARD 제공된 후 버퍼를 노이즈로 채워 디버그 런타임에 적용됩니다.

Direct3D9와 Direct3D9Ex 간의 차이점:

  • Direct3D9Ex에서 애플리케이션이 대칭 이동 모드를 채택하는 시기를 지정하기 위해 D3DSWAPEFFECT_FLIPEX 추가됩니다. 즉, 애플리케이션의 프레임이 컴퍼지션을 위해 DWM(데스크톱 창 관리자)에 복사되는 대신 창 모드로 전달됩니다. 대칭 이동 모드는 보다 효율적인 메모리 대역폭을 제공하며 애플리케이션이 전체 화면 표시 통계를 활용할 수 있도록 합니다. 전체 화면 동작은 변경되지 않습니다. 대칭 이동 모드 동작은 Windows 7부터 사용할 수 있습니다.

 

hDeviceWindow

형식: HWND

디바이스 창은 화면에서 백 버퍼의 위치와 크기를 결정합니다. 이 기능은 Present 중에 백 버퍼 내용이 프런트 버퍼에 복사되는 경우 Direct3D에서 사용됩니다.

  • 전체 화면 애플리케이션의 경우 위쪽 창(포커스 창)에 대한 핸들입니다.

    여러 전체 화면 디바이스(예: 다중 모니터 시스템)를 사용하는 애플리케이션의 경우 정확히 하나의 디바이스가 포커스 창을 디바이스 창으로 사용할 수 있습니다. 다른 모든 디바이스에는 고유한 디바이스 창이 있어야 합니다.

  • 창 모드 애플리케이션의 경우 이 핸들은 Present의 기본 대상 창이 됩니다. 이 핸들이 NULL이면 포커스 창이 표시됩니다.

런타임은 창 크기의 사용자 변경 내용을 반영하려고 시도하지 않습니다. 이 창이 다시 설정되면 백 버퍼가 암시적으로 다시 설정되지 않습니다. 그러나 Present 메서드는 창 위치 변경 내용을 자동으로 추적합니다.

형식: BOOL

애플리케이션이 창으로 실행되면 TRUE입니다. 애플리케이션이 전체 화면을 실행하는 경우 FALSE입니다.

EnableAutoDepthStencil

형식: BOOL

이 값이 TRUE이면 Direct3D는 애플리케이션에 대한 깊이 버퍼를 관리합니다. 디바이스는 만들 때 깊이 스텐실 버퍼를 만듭니다. 깊이 스텐실 버퍼는 자동으로 디바이스의 렌더링 대상으로 설정됩니다. 디바이스가 다시 설정되면 깊이 스텐실 버퍼가 자동으로 제거되고 새 크기로 다시 만들어집니다.

EnableAutoDepthStencil이 TRUE이면 AutoDepthStencilFormat이 유효한 깊이 스텐실 형식이어야 합니다.

AutoDepthStencilFormat

형식: D3DFORMAT

D3DFORMAT 열거형 형식의 멤버입니다. 디바이스에서 만들 자동 깊이 스텐실 표면의 형식입니다. EnableAutoDepthStencilTRUE가 아니면 이 멤버는 무시됩니다.

플래그

형식: DWORD

D3DPRESENTFLAG 상수 중 하나입니다.

FullScreen_RefreshRateInHz

형식: UINT

디스플레이 어댑터가 화면을 새로 고치는 속도입니다. 값은 애플리케이션이 실행되는 모드에 따라 달라집니다.

  • 창 모드의 경우 새로 고침 빈도는 0이어야 합니다.
  • 전체 화면 모드의 경우 새로 고침 빈도는 EnumAdapterModes에서 반환하는 새로 고침 속도 중 하나입니다.

PresentationInterval

형식: UINT

스왑 체인의 백 버퍼를 전면 버퍼에 표시할 수 있는 최대 속도입니다. 지원되는 모드 및 간격에 대한 자세한 설명은 D3DPRESENT를 참조하세요.

요구 사항

요구 사항
헤더
D3D9Types.h

추가 정보

Direct3D 구조체

CreateDevice

CreateAdditionalSwapChain

표시

다시 설정