IDCompositionTexture::GetAvailableFence 方法 (dcomp.h)

重要

某些信息与预发行产品相关,该产品在商业发布之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

检索 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 纹理的不同区域可能具有不同的可用性状态。

要求

要求
Header dcomp.h

另请参阅