다음을 통해 공유


IDirectXVideoAccelerationService::CreateSurface 메서드(dxva2api.h)

DXVA(DirectX Video Acceleration) 비디오 프로세서 또는 DXVA 디코더 렌더링 대상을 만듭니다.

구문

HRESULT CreateSurface(
  [in]      UINT              Width,
  [in]      UINT              Height,
  [in]      UINT              BackBuffers,
  [in]      D3DFORMAT         Format,
  [in]      D3DPOOL           Pool,
  [in]      DWORD             Usage,
  [in]      DWORD             DxvaType,
  [out]     IDirect3DSurface9 **ppSurface,
  [in, out] HANDLE            *pSharedHandle
);

매개 변수

[in] Width

표면의 너비(픽셀)입니다.

[in] Height

표면의 높이(픽셀)입니다.

[in] BackBuffers

백 버퍼의 수입니다. 메서드는 BackBuffers + 1개의 표면을 만듭니다.

[in] Format

D3DFORMAT 값 또는 FOURCC 코드로 지정된 픽셀 형식입니다. 자세한 내용은 Direct3D 설명서를 참조하세요.

[in] Pool

표면을 만들 메모리 풀로 , D3DPOOL 값으로 지정됩니다. 자세한 내용은 Direct3D 설명서를 참조하세요. 디코더는 일반적으로 D3DPOOL_DEFAULT 값을 사용해야 합니다.

[in] Usage

예약되어 있습니다. 이 값을 0으로 설정합니다.

[in] DxvaType

만들 표면의 유형입니다. 다음 값 중 하나를 사용합니다.

의미
DXVA2_VideoDecoderRenderTarget
비디오 디코더 렌더링 대상.
DXVA2_VideoProcessorRenderTarget
비디오 프로세서 렌더링 대상입니다. IDirectXVideoProcessor::VideoProcessBlt 작업에 사용됩니다.
DXVA2_VideoSoftwareRenderTarget
소프트웨어 렌더링 대상. 이 표면 유형은 소프트웨어 DXVA 디바이스에서 사용하기 위한 것입니다.

[out] ppSurface

호출자가 할당한 IDirect3DSurface9 포인터 배열의 주소입니다. 배열의 크기는 1 + BackBuffers 여야 합니다(백 버퍼와 전면 버퍼 1개에 충분). 메서드는 배열을 IDirect3DSurface9 포인터로 채웁니다. 호출자는 모든 인터페이스 포인터를 해제해야 합니다. 또한 프런트 버퍼는 각 백 버퍼에 대한 참조 횟수를 보유합니다. 따라서 앞면 버퍼가 삭제될 때까지 백 버퍼는 삭제되지 않습니다.

[in, out] pSharedHandle

Direct3D 디바이스 간에 표면을 공유하는 데 사용되는 핸들에 대한 포인터입니다. 이 매개 변수를 NULL로 설정합니다.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 Description
S_OK
메서드가 성공했습니다.
D3DERR_INVALIDCALL
잘못된 매개 변수
E_FAIL
DirectX 비디오 가속 관리자가 초기화되지 않았습니다.
E_POINTER
NULL 포인터 인수입니다.

설명

메서드가 E_FAIL 반환하는 경우 IDirect3DDeviceManager9::ResetDevice 를 호출하여 DirectX 비디오 가속 관리자를 다시 설정합니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 dxva2api.h

추가 정보

DirectX 비디오 가속 2.0

IDirectXVideoAccelerationService