**“图形事件列表”**是 Visual Studio 中的图形诊断工具之一,可以帮助您浏览在您游戏或应用程序的特定帧期间发生的 Direct3D 事件,并分析他们的影响。这包括设备或对象创建之类的支持事件。
这是**“图形事件列表”**:
.png)
导航图形事件列表
由于许多 Direct3D 事件可以在典型的游戏或 app 的一个帧生成,**“图像事件列表”**具有可帮助您快速查找重要事件和相关信息的功能。
若要减少**“图像事件列表”**不相关的事件数,省略AddRef 和 Release 事件,因此,您可以如上图显示按名称筛选事件,一次筛选其中任意,筛选显示其名称中具有 Vertex 的事件— 或通过使用分号隔开的关键字列表 — 例如,要显示其名称中具有 Draw 或 Primitive 的“绘制,基元”。
说明 |
|---|
筛选列表。空间 (例如区分大小,“绘制;原始”和“绘制;原始”是不同的。 |
由于 Draw 调用是尤其重要事件,**“图像事件列表”提供“转到下绘制调用”和“转到上绘制调用”**按钮,位于窗口的左上角,因此,您可以快速查找并在它们之间移动。
事件类别
在 “ 图像事件列表” 中显示的事件组织为四个类别;其中的三个表示各个事件,第四个用于组相关事件。与指示其所属的类别的图标一起显示每个事件。
类别 |
描述 |
|---|---|
|
标记在捕获的帧过程中,生成的绘制事件。 |
|
标记在已捕获框架前发生的事件,如设备或对象创建。 |
|
标记一个操作或相关事件的一组的定义,由该应用程序。组可以展开表示事件,它们由。 |
帧和帧前事件生成到 Direct3D 运行时,并对应于 Direct3D API 调用。您不无需执行任何操作便可启用这些事件。
用户定义的事件和组特定于某特定应用程序。您可以使用用户定义的事件来对出现在您应用程序中的重要事件进行标记,以便可以将它们与**“图像事件列表”中的图像事件关联。例如,在绘制时特定类型的对象时可以使用标记,以便于在“图像事件列表”中找到其绘制调用。使用用户定义的事件组,可以将相关事件组织到组或层次结构,以便您可以更轻松地浏览“图像事件列表”**。例如,您可以将与接口呈现相关的事件进行编组。
若要在您的应用程序中创建用户定义的事件标记和用户定义的事件组,请使用 Direct3D 使用的相同 API 来标记事件以及在其他 Direct3D 工具中使用的组。在 Direct3D 11.1,API 属于 ID3DUserDefinedAnnotation 接口;对于 Direct3D 的早期版本,请使用 API 的 D3DPERF_ 系列。
API 说明 |
API (Direct3D 11.1) |
API (Direct3D 11.0 和更早版本) |
|---|---|---|
开始一个用户定义的事件组 |
ID3DUserDefinedAnnotation::BeginEvent |
D3DPerf_BeginEvent |
结束一个用户定义的事件组 |
ID3DUserDefinedAnnotation::EndEvent |
D3DPerf_EndEvent |
创建用户定义的事件标记 |
ID3DUserDefinedAnnotation::SetMarker |
D3DPerf_SetMarker |
指向图形对象的链接
若要了解图形事件,则可能需要有关该事件引用的当前设备状态或 Direct3D 对象的附加信息,**“图形事件列表”**提供为每个事件指向此信息的链接。
正在使用“图像事件列表”以查找呈现问题
与其他图像诊断工具一起使用**“图像事件列表”**,可以查明呈现问题到特定 Direct3D 事件。当您已标识问题首先出现的事件时,可以使用其他图像诊断工具来确定问题的原因。
对于与对象缺失有关的呈现问题 - 也就是说对象不在预期的位置,您可以同时使用**“图形事件列表”和“图形管道阶段”窗口。当您选择 Draw 或事件列表中的 Dispatch 事件时,“图像管道阶段”**窗口在管道的每个阶段上显示事件的效果。通过单步执行这些事件并注意管道阶段,呈现对象时可以检测,因此,即使在呈现目标不会显示。
更好地了解呈现对象呈现的问题不正确的是,对象存在,但是,存在不正确的外观您可以使用 图形事件列表 检查图像访问日志记录的事件。当您选择 Draw 时或在事件的 Dispatch 事件的列表,Visual Studio 显示呈现目标,显示方式,在发生事件时。通过单步执行这些事件并注意呈现目标如何在图像更改记录文档窗口,可以注意到特定操作的结果从而了解最终如何呈现目标由一个呈现的错误的方式引起由 interactive 不同的事件在呈现目标的许多事件有时生成。
说明