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 の
pfnCreateContextCb の