다음을 통해 공유


PFND3DDDI_PRESENTCB 콜백 함수(d3dumddi.h)

pfnPresentCb 함수는 원본 할당에서 콘텐츠를 복사합니다.

구문

PFND3DDDI_PRESENTCB Pfnd3dddiPresentcb;

HRESULT Pfnd3dddiPresentcb(
  HANDLE hDevice,
  D3DDDICB_PRESENT *unnamedParam2
)
{...}

매개 변수

hDevice

디스플레이 디바이스(그래픽 컨텍스트)에 대한 핸들입니다.

unnamedParam2

pData [in]

콘텐츠가 복사되는 원본 할당을 설명하는 D3DDDICB_PRESENT 구조체에 대한 포인터입니다.

반환 값

pfnPresentCb 는 다음 값 중 하나를 반환합니다.

반환 코드 설명
S_OK 콘텐츠가 성공적으로 복사되었습니다.
E_OUTOFMEMORY pfnPresentCb는 메모리 부족으로 인해 완료할 수 없습니다.
E_INVALIDARG 매개 변수의 유효성이 검사되었고 잘못된 것으로 확인되었습니다.

이 함수는 다른 HRESULT 값을 반환할 수도 있습니다.

설명

사용자 모드 표시 드라이버는 pData 매개 변수가 가리키는 D3DDDICB_PRESENT 구조체의 hContext 멤버를 pfnCreateContextCb 함수를 호출하여 이전에 만든 컨텍스트로 설정합니다. 사용자 모드 표시 드라이버는 Microsoft Direct3D 런타임이 드라이버의 CreateDevice 또는 CreateDevice(D3D10) 함수를 호출하여 디바이스를 만들 때 하나 이상의 컨텍스트를 만들어야 합니다. Direct3D 런타임은 현재 작업을 만든 컨텍스트로 보냅니다.

Direct3D 버전 11 참고: 드라이버가 pfnPresentCb를 호출하는 방법에 대한 자세한 내용은 Direct3D 10의 변경 내용을 참조하세요.

예제

다음 코드 예제에서는 대상 화면을 색으로 채우는 방법을 보여 줍니다.

    HRESULT hr=S_OK;
    // A color-fill request that does not have a source surface
    D3DDDICB_PRESENT    PresentCBData = {0};

    PresentCBData.hContext = m_sContexts[MULTI_ENGINE_NODE_3D].hContext;
    PresentCBData.hSrcAllocation = NULL;

    if (pPresent->hDstResource) {
        DWORD   dwDstSurf = ((DWORD)(DWORD_PTR)pPresent->hDstResource) + pPresent->DstSubResourceIndex;
        _ASSERT(dwDstSurf < m_RTbl.Size());
        m_RTbl[dwDstSurf].m_qwBatch = m_qwBatch;
        PresentCBData.hDstAllocation = R200GetSurfaceAllocHandle(m_pR200Ctx, dwDstSurf);
    }

    hr = m_d3dCallbacks.pfnPresentCb(m_hD3D, &PresentCBData);

    return hr;

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista 이상 버전의 Windows 운영 체제에서 사용할 수 있습니다.
대상 플랫폼 데스크톱
머리글 d3dumddi.h(D3dumddi.h 포함)

추가 정보

CreateDevice

CreateDevice(D3D10)

D3DDDICB_PRESENT

D3DDDI_DEVICECALLBACKS

pfnCreateContextCb