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 を含む) |