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