ID3DUserDefinedAnnotation 接口 (d3d11_1.h)

ID3DUserDefinedAnnotation 接口使应用程序能够描述应用程序代码流中的概念部分和标记。 适当启用的工具(如 Microsoft Visual Studio Ultimate 2012)可以在工具的 Microsoft Direct3D 时间线上直观地显示这些部分和标记,同时该工具调试应用程序。 这些可视注释使此类工具的用户能够导航到感兴趣的时间线部分,或了解应用程序代码的某些部分生成的一组 Direct3D 调用。

继承

ID3DUserDefinedAnnotation 接口继承自 IUnknown 接口。 ID3DUserDefinedAnnotation 也具有以下类型的成员:

方法

ID3DUserDefinedAnnotation 接口具有这些方法。

 
ID3DUserDefinedAnnotation::BeginEvent

标记事件代码部分的开头。
ID3DUserDefinedAnnotation::EndEvent

标记事件代码部分的末尾。
ID3DUserDefinedAnnotation::GetStatus

确定调用应用程序是否在 Microsoft Direct3D 分析工具下运行。
ID3DUserDefinedAnnotation::SetMarker

在代码中标记单个执行点。

注解

当调用应用程序未在 Direct3D 特定的分析工具(如 Visual Studio Ultimate 2012)下运行时,ID3DUserDefinedAnnotation 的方法不起作用。

ID3DUserDefinedAnnotation 接口由 Microsoft Direct3D 11 设备上下文发布。 因此, ID3DUserDefinedAnnotation 具有与 ID3D11DeviceContext 接口或任何其他上下文接口相同的线程规则。 有关 Direct3D 线程处理的详细信息,请参阅 MultiThreading。 若要检索上下文的 ID3DUserDefinedAnnotation 接口,请为上下文 (调用 QueryInterface 方法,例如 ID3D11DeviceContext::QueryInterface) 。 在此调用中,必须传递 ID3DUserDefinedAnnotation 的标识符。

ID3DUserDefinedAnnotation 接口是 Microsoft Direct3D 10 及更高版本等效的 Direct3D 9 PIX 函数 (D3DPERF_* 函数) 。

注意 在应用中设置 D3D11_CREATE_DEVICE_PREVENT_ALTERING_LAYER_SETTINGS_FROM_REGISTRY 标志将替换调用 D3DPerf_SetOptions (1) 。 但是,若要防止 Direct3D 调试工具挂接应用,应用还可以调用 ID3DUserDefinedAnnotation::GetStatus 来确定它是否在 Direct3D 调试工具下运行,然后相应地退出。
 
必须成对调用 BeginEventEndEvent 方法;对这些方法的调用对可以嵌套在应用程序的调用堆栈中更高级别的对这些方法的调用对内。 换句话说,“绘图世界”部分可以完全包含另一个名为“绘图树”的分区,这又可以完全包含一个名为“Draw Oaks”的部分。 只能将 EndEvent 方法与最新的 BeginEvent 方法相关联,即对不能重叠。 不能为最近的 BeginEvent 之前的任何 BeginEvent 调用 EndEvent。 事实上,运行时将第一个 EndEvent 解释为结束第二个 BeginEvent

要求

要求
最低受支持的客户端 适用于 Windows 7 的Windows 8和平台更新 [桌面应用 |UWP 应用]
最低受支持的服务器 适用于 Windows Server 2008 R2 的Windows Server 2012和平台更新 [桌面应用 |UWP 应用]
目标平台 Windows
标头 d3d11_1.h

另请参阅

通用版本接口

IUnknown