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


Метод IDCompositionTexture::GetAvailableFence (dcomp.h)

Важно!

Некоторые сведения относятся к предварительной версии продукта, который может быть существенно изменен до его коммерческого выпуска. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Извлекает пару "забор/значение" синхронизации Direct3D, которая указывает, когда текстура композиции станет доступной, если эта информация известна. Возвращаемое значение зависит от состояния доступности текстуры композиции. Состояние доступности указывает, можно ли и когда безопасно отрисовывать текстуру композиции.

Сведения о состояниях доступности, их описаниях и поведении GetAvailableFence для каждого состояния см. в разделе Примечания.

Если текстура композиции становится доступной, приложение должно быть осторожным, чтобы выполнить отрисовку только к точному значению текстуры Direct3D, к которому оно относится.

Синтаксис

HRESULT GetAvailableFence(
  UINT64 *fenceValue,
  REFIID iid,
  void   **availableFence
);

Параметры

fenceValue

Тип: _Out_ UINT64*

Возвращаемое значение ограждения.

iid

Тип: _In_ REFIID

Идентификатор интерфейса.

availableFence

Тип: _Outptr_result_maybenull_ void**

Возвращаемое доступное ограждение или nullptrв зависимости от состояния доступности текстуры композиции. Дополнительные сведения см. в разделе Примечания .

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

Тип: HRESULT

Если функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Ниже приведены состояния доступности, их описания и поведение GetAvailableFence для каждого состояния.

немедленно доступен. Текстура композиции не отображается диспетчером окон рабочего стола (DWM), а фиксации приложений не помещаются в очередь, чтобы сделать это. Таким образом, текстура композиции безопасна для немедленного написания. GetAvailableFence возвращает доступное ограждение, которое уже будет соответствовать возвращаемому значению.

скоро будет доступен. Текстура композиции в настоящее время отображается DWM, но приложение удалило ее из визуального дерева и зафиксировало в DWM. Однако эта фиксация еще не была обработана DWM, поэтому DWM еще не прекратил отображение текстуры. Приложение может отрисовывать текстуру, которая скоро станет доступной, если эта работа синхронизирована с доступным ограждением текстуры. GetAvailableFence возвращает доступное ограждение. Текстура композиции будет безопасно записывать в, когда это ограждение будет сигнализировать о возвращаемом значении.

недоступно. Текстура композиции в настоящее время отображается dwm или поставлена в очередь для отображения DWM. Поэтому ваше приложение не должно выполнять запись в него. GetAvailableFence возвращает вместо nullptr ограждения.

Доступный забор описывает доступность одной текстуры композиции. Несколько текстур композиции могут ссылаться на одну и ту же текстуру Direct3D, если каждая текстура композиции занимает другую (неперекрывающуюся) область более крупной текстуры Direct3D, указав исходный прямоугольник (метод, известный как атласирование). В таком случае, если текстура композиции становится доступной, ваше приложение должно быть осторожным, чтобы выдавать отрисовку только к точному значению текстуры Direct3D; чтобы не вмешиваться в пиксели, которые могут принадлежать другим текстурам композиции (которые могут быть недоступны). Это связано с тем, что разные области одной текстуры Direct3D могут иметь разные состояния доступности.

Требования

Требование Значение
Заголовок dcomp.h

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