次の方法で共有


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 オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header d3dumddi.h (D3dumddi.h を含む)

こちらもご覧ください

CreateDevice

CreateDevice(D3D10)

D3DDDICB_PRESENT

D3DDDI_DEVICECALLBACKS

pfnCreateContextCb