次の方法で共有


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) 関数を してデバイスを作成する場合、ユーザー モード ディスプレイ ドライバーは少なくとも 1 つのコンテキストを作成する必要があります。 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