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 值。
用户模式显示驱动程序将 hContextD3DDDICB_PRESENT 结构的成员设置为以前通过调用 pfnCreateContextCb 函数创建的上下文 pData 参数所指向的上下文。 当用户模式显示驱动程序必须在 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) |