**“图形像素历史记录”**是在 Visual Studio 中的图像诊断工具之一,可以帮助您了解在您游戏或应用程序的特定帧期间 Direct3D 事件如何影响特定像素。
这是**“图形像素历史记录”**窗口:
![]()
了解像素历史记录
使用**“图像像素历史记录”**,可以分析呈现目标的特定像素在特定框架中,如何受 Direct3D 事件的影响。即使后续事件或同一事件的后续原始事件继续更改像素的最终颜色值,您可以查明特定 Direct3D 事件的呈现问题。例如,像素可能无法正确呈现,而被另一个半透明的像素遮盖,这样两者的颜色就在帧缓存中混合在一起如果仅指导您呈现目标的最后结果,则此种问题应该很难诊断。
“图形像素历史记录”窗口在选定的帧中显示像素的完整历史记录。在窗口顶部的“ 最终帧缓冲区” 显示写入在帧结束帧缓冲区的颜色和关于像素的附加信息,如这些信息来自的帧和其屏幕坐标。此区域还包含**“呈现 Alpha”复选框。在选择此复选框后,“最终机架缓冲区”** 颜色和使用透明度在棋盘图案上显示中间颜色值。如果清除此复选框,则忽略颜色值的 alpha 通道。
窗口的底部显示有机会与**“初始”和“最终”伪事件一起影响像素的颜色,表示像素的质数和最终颜色值的 pseudo 事件。更改像素的第一个操作取决于初始颜色值 (通常 Clear 事件) 的颜色。即使其他操作不影响它,在其历史记录像素始终有两个虚拟事件。当其他事件有机会影响像素时,其显示在“初始”和“最终”**事件之间。可以展开该事件显示其详细信息。对于简单的操作,例如清除呈现目标,事件的效果仅仅是颜色的值。更复杂的事件,如绘制调用将生成可能会构成像素的颜色的一个或多个基元。
事件绘制的基元由其基元类型和索引及对象的基元总数进行标识。例如,类似**“三角形 (1456),共 (6214)”**的标识符意味着基元对应于 6214 个三角形组成的对象的第 1456 个三角形。基元标识符左侧是概述基元对像素的效果的图标。影响像素颜色的基元由充满结果颜色的圆角矩形表示。排除于对像素颜色有影响的基元由指示排除像素的原因的图标表示。这些图表将在此文章的 基元排除 节后面进行说明。
您可以展开每个基元以检查如何使用现有的像素颜色合并像素着色器输出以生成结果颜色。此处还可以检查或调试与基元相关的像素着色器代码,因此,您可以进一步扩展顶点着色器节点,检查顶点着色器输入。
基元排除
如果排除了基元影响像素颜色,此排除发生可能基于多种原因。每个原因是通过此表中描述的图标表示:
图标 |
互斥原因 |
|---|---|
|
像素已排除,因为它未通过深度测试。 |
|
像素已排除,因为它未通过剪刀测试。 |
|
像素已排除,因为它未通过模具测试。 |
绘制调用排除
如果所有在绘制的原始调用从影响呈现目标中排除,因为它们在测试失败,则绘制调用不能展开,并对应于排除的原因的图标旁边将显示。原因绘制调用排除类似原排除的原因,因此,它们的图标是类似的。
查看并调试着色器代码
通过使用与着色器相关联的基元下的控件,您可以查看**“顶点着色器”、“外壳着色器 ”、“域着色器”、“几何图形着色器”或“像素着色器”**的代码,也可对它进行调试。
查看着色器的源代码
- 在与要查看的着色器相关的基元下,选择着色器的标题,例如,选择**“顶点着色器”**查看顶点着色器源代码。
调试着色器
- 在与要调试的着色器相关的基元下,到着色器的标题的右侧,选择**“开始调试”**。
指向图形对象的链接
若要了解在像素历史记录的图形事件,可以在事件发生时设备状态的信息或事件引用的 Direct3D 的信息。对于像素历史记录中的每个事件,**“图形像素历史记录”**提供指向在当前设备状态和相关对象的链接。