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

多引擎同步