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 포함) |