“图形对象表”是 Visual Studio 中的一种图形诊断工具,可帮助你了解支持游戏或应用的特定帧的 Direct3D 对象。
这就是“图形对象表”:
备注
从 Visual Studio 2013 Update 3 开始,图形诊断工具窗口承载于 Visual Studio shell 的独立副本中。这个自定义 shell 被称为图形分析,它消除不必要的菜单和选项,否则帧分析和工作流将与之前的相同。有关这一更改的详细信息,请参阅 图形诊断概述。
了解图形对象表
通过使用图形对象表,你可以分析支持特定帧呈现的 Direct3D 对象。 你可以通过检查呈现问题的属性和数据将它准确定位到特定对象。 (通过在诊断早期使用其他图形诊断工具,可以缩小可能不需要的对象的列表。)找到有问题的对象时,你可以使用特定于这一类型的可视化工具来对它进行检查 - 例如,你可以使用图像编辑器来查看纹理,或用“缓冲区可视化工具”查看缓冲区的内容。
“图形对象表”支持复制和粘贴,这样便可以使用其他工具(例如 Microsoft Excel)来检查它的内容。
图形对象表格式
“图形对象表”可显示支持与选定事件关联的帧的 Direct3D 对象和资源 - 例如,状态对象、缓冲区、着色器、纹理以及其他资源。 创建于之前的帧但不会在捕获的帧期间使用的对象将在对象表中被省略。 在捕获的帧期间中被之前的事件破坏的对象将在后续事件中被省略。 未在 D3D10Device 或 D3D11DeviceContext 上设置的对象将显示为灰色文本。 对象会以表格的形式显示。
列 |
描述 |
---|---|
标识符 |
对象 ID。 |
名称 |
通过使用 Direct3D 函数 SetPrivateData 在对象上设置的特定于应用程序的信息 - 通常提供有关一个对象的其他识别信息。 |
类型 |
对象类型。 |
活动的 |
在捕获的帧期间,为在 D3D10Device 或 D3D11DeviceContext 上设置的对象显示“*”。 它对应的是显示为灰色文本但提供可用于帮助对象表排序的列项的对象。 |
大小 |
对象大小(以字节为单位)。 |
格式 |
对象的格式。 例如,纹理对象格式或着色器对象的着色器模型。 |
Mip |
纹理对象具有的 MIP 级别数。 不适用于其他对象类型。 |
宽度 |
纹理对象的宽度。 不适用于其他对象类型。 |
高度 |
纹理对象的高度。 不适用于其他对象类型。 |
深度 |
三维纹理对象的深度。 如果纹理不是三维纹理,则这个值为 0。 不适用于其他对象类型。 |
图形对象查看器
如果要查看有关对象的详细信息,通过在“图形对象表”中选择对象的名称来打开它。 对象的相关详细信息以不同格式显示,具体取决于对象的类型。 例如,设备状态(“D3D10 设备”)显示为格式化列表,而纹理由“图像编辑器”工具显示并可修改和保存。
设备上下文对象
设备上下文(“D3D11 设备上下文”或“D3D10 设备”)对象尤为重要,因为它包含最重要的状态信息,而且它链接到当前设置的其他状态对象。 设备上下文详细信息显示在新的文档窗口中,并且每个类别的信息显示在各自的选项卡上。 当选择新事件来反映当前设备状态时,设备上下文会发生改变。
缓冲区对象
缓冲区对象的详细信息(D3D11 缓冲区或 D3D10 缓冲区)会显示在一个新的文档窗口中,这个窗口会将缓冲区的内容显示在一个表格中,还会提供一个用于更改缓冲区内容显示方式的接口。 “缓冲区数据”表支持复制和粘贴,这样就可以使用另一个工具(例如 Microsoft Excel)来检查它的内容。 缓冲区的内容将根据“格式”组合框的值来解释,组合框位于“缓冲区数据”表上方。 你可以在框中输入由下表中所列的数据类型组成的复合数据格式。 例如,“float int”显示一个结构的列表,这个结构包含一个 32 位浮点值,后接一个 32 位带符号整数值。 你所指定的复合数据格式被添加到组合框中以供将来使用。
类型 |
描述 |
---|---|
float |
32 位浮点值。 |
float2 |
包含两个 32 位浮点值的矢量。 |
float3 |
包含 3 个 32 位浮点值的矢量。 |
float4 |
包含 4 个 32 位浮点值的矢量。 |
byte |
8 位带符号整数值。 |
2byte |
16 位带符号整数值。 |
4byte |
32 位带符号整数值。 与“int”相同。 |
8byte |
64 位带符号整数值。 与“int64” 相同。 |
xbyte |
8 位十六进制值。 |
x2byte |
16 位十六进制值。 |
x4byte |
32 位十六进制值。 与“xint”相同。 |
x8byte |
64 位十六进制值。 与“xint64”相同。 |
ubyte |
8 位无符号整数值。 |
u2byte |
16 位无符号整数值。 |
u4byte |
32 位无符号整数值。 与“uint”相同。 |
u8byte |
64 位无符号整数值。 与“uint64”相同。 |
half |
16 位浮点值。 |
half2 |
包含两个 16 位浮点值的矢量。 |
half3 |
包含 3 个 16 位浮点值的矢量。 |
half4 |
包含 4 个 16 位浮点值的矢量。 |
double |
64 位浮点值。 |
int |
32 位带符号整数值。 与“4byte”相同。 |
int64 |
64 位带符号整数值。 与“8byte”相同。 |
xint |
32 位十六进制值。 与“x4byte”相同。 |
xint64 |
64 位十六进制值。 与“x8byte”相同。 |
uint |
32 位无符号整数值。 与“u4byte”相同。 |
uint64 |
64 位无符号整数值。 与“u8byte”相同。 |
bool |
一个布尔(true 或 false)值。 每个布尔值由一个 32 位值表示。 |