Compartir a través de


Método ID3D12Fence::SetEventOnCompletion (d3d12.h)

Especifica un evento que se genera cuando la barrera alcanza un valor determinado.

Sintaxis

HRESULT SetEventOnCompletion(
  UINT64 Value,
  HANDLE hEvent
);

Parámetros

Value

Tipo: UINT64

Valor de barrera cuando se va a señalar el evento.

hEvent

Tipo: HANDLE

Identificador del objeto de evento.

Valor devuelto

Tipo: HRESULT

Este método devuelve E_OUTOFMEMORY si los componentes del kernel no tienen suficiente memoria para almacenar el evento en una lista. Consulte Códigos de retorno de Direct3D 12 para ver otros valores devueltos posibles.

Comentarios

Para especificar varias barreras antes de que se desencadene un evento, consulte SetEventOnMultipleFenceCompletion.

Si hEvent es un identificador nulo, esta API no devolverá hasta que se hayan alcanzado los valores de barrera especificados.

Este método se puede llamar de forma segura desde varios subprocesos a la vez.

Ejemplos

El ejemplo D3D12Multithreading usa ID3D12Fence::SetEventOnCompletion de la siguiente manera:

// 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);

Consulte el código de ejemplo en la referencia de Direct3D 12.

Requisitos

   
Plataforma de destino Windows
Encabezado d3d12.h
Library D3D12.lib
Archivo DLL D3D12.dll

Consulte también

ID3D12Fence

Sincronización de varios motores