Поделиться через


Метод ID3D12Fence::SetEventOnCompletion (d3d12.h)

Указывает событие, которое возникает, когда ограждение достигает определенного значения.

Синтаксис

HRESULT SetEventOnCompletion(
  UINT64 Value,
  HANDLE hEvent
);

Параметры

Value

Тип: UINT64

Значение ограждения при сигнале события.

hEvent

Тип: HANDLE

Дескриптор объекта события.

Возвращаемое значение

Тип: HRESULT

Этот метод возвращает E_OUTOFMEMORY , если у компонентов ядра недостаточно памяти для хранения события в списке. Другие возможные возвращаемые значения см. в разделе Коды возврата Direct3D 12 .

Комментарии

Чтобы указать несколько ограждений перед активацией события, см. раздел SetEventOnMultipleFenceCompletion.

Если hEvent является пустым дескриптором, этот 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
Header d3d12.h
Библиотека D3D12.lib
DLL D3D12.dll

См. также раздел

ID3D12Fence

Синхронизация с несколькими движками