Метод 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 |