次の方法で共有


ID3D12Fence::SetEventOnCompletion メソッド (d3d12.h)

フェンスが特定の値に達したときに発生するイベントを指定します。

構文

HRESULT SetEventOnCompletion(
  UINT64 Value,
  HANDLE hEvent
);

パラメーター

Value

種類: UINT64

イベントが通知される場合のフェンス値。

hEvent

型: HANDLE

イベント オブジェクトへのハンドル。

戻り値

型: HRESULT

このメソッドは、カーネル コンポーネントがリストにイベントを格納するのに十分なメモリがない場合に、 E_OUTOFMEMORY を返します。 その他の可能な戻り値については、「戻りコードDirect3D 12」を参照してください。

解説

イベントがトリガーされる前に複数のフェンスを指定するには、「 SetEventOnMultipleFenceCompletion」を参照してください。

hEvent が null ハンドルの場合、この API は、指定されたフェンス値に達するまで戻りません。

このメソッドは、一度に複数のスレッドから安全に呼び出すことができます。

D3D12Multithreading サンプルでは、ID3D12Fence::SetEventOnCompletion を次のように使用します。

// Wait for the command list to execute; we are reusing the same command 
// list in our main loop but for now, we just want to wait for setup to 
// complete before continuing.

// Signal and increment the fence value.
const UINT64 fenceToWaitFor = m_fenceValue;
ThrowIfFailed(m_commandQueue->Signal(m_fence.Get(), fenceToWaitFor));
m_fenceValue++;

// Wait until the fence is completed.
ThrowIfFailed(m_fence->SetEventOnCompletion(fenceToWaitFor, m_fenceEvent));
WaitForSingleObject(m_fenceEvent, INFINITE);

Direct3D 12 リファレンスのコード例を参照してください

要件

   
対象プラットフォーム Windows
ヘッダー d3d12.h
Library D3D12.lib
[DLL] D3D12.dll

関連項目

ID3D12Fence

マルチエンジン同期