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 运行时调用驱动程序的 CreateDeviceCreateDevice (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