The Graphics Object Table, which is one of the Graphics Diagnostics tools in Visual Studio, can help you understand the Direct3D objects that support a particular frame of your game or app.
This is the Graphics Object Table:
Starting in Visual Studio 2013 Update 3, the Graphics Diagnostics tool windows are hosted in an independent copy of the Visual Studio shell. This customized shell, called Graphics Analysis, eliminates unnecessary menus and options, but otherwise Frame Analysis and workflow are the same as before. For more information about this change, see Graphics Diagnostics Overview.
By using the Graphics Object Table, you can analyze the Direct3D objects that support the rendering of a particular frame. You can pinpoint a rendering problem to a specific object by examining its properties and data. (By using other Graphics Diagnostics tools earlier in your diagnosis, you can narrow the list of objects that might not be what you expect.) When you have found the offending object, you can use a visualization that's specific to its type to examine it—for example, you can use the Image Editor to view textures, or the Buffer Visualizer to view buffer contents.
The Graphics Object Table supports copy and paste so that you can use another tool—for example, Microsoft Excel—to examine its contents.
The Graphics Object Table displays the Direct3D objects and resources that support the frame that's associated with the selected event—for example, state objects, buffers, shaders, textures, and other resources. Objects that were created in a previous frame but are not used during the captured frame are omitted from the object table. Objects that have been destroyed by previous events during the captured frame are omitted in subsequent events. Objects that are not set on the D3D10Device or D3D11DeviceContext are displayed as gray text. Objects are displayed in a table format.
The object ID.
Application-specific information that was set on the object by using the Direct3D function SetPrivateData—typically to provide additional identifying information about an object.
The object type.
Displays "*" for an object that was set on the D3D10Device or D3D11DeviceContext during the captured frame.
This corresponds to objects that are displayed as grey text, but provides a column entry that you can use to help sort the object table.
The size of the object in bytes.
The format of the object. For example, the format of a texture object, or the shader model of a shader object.
The number of MIP levels that a texture object has. Does not apply to other object types.
The width of a texture object. Does not apply to other object types.
The height of a texture object. Does not apply to other object types.
The depth of a 3-D texture object. If a texture is not 3-D, then the value is 0. Does not apply to other object types.
To view details about an object, open it by choosing its name in the Graphics Object Table. Details about the object are displayed in different formats, depending on the type of the object. For example, device state (D3D10 Device) is displayed as a formatted list, and a texture is displayed by the Image Editor tool and can be modified and saved.
The device context (D3D11 Device Context or D3D10 Device) object is particularly important because it holds the most important state information, and it links to other state objects that are currently set. Device context details are displayed in a new document window, and each category of information is presented there on its own tab. The device context changes when a new event is selected to reflect the current device state.
Buffer object details (D3D11 Buffer or D3D10 Buffer) are displayed in a new document window that presents the buffer contents in a table and provides an interface for changing how the buffer contents are displayed. The buffer data table supports copy and paste so that you can use another tool—for example, Microsoft Excel—to examine its contents. The content of the buffer is interpreted according to the value of the format combo box, which is located above the buffer data table. In the box, you can enter a composite data format that's made up of the data types that are listed in the following table. For example, "float int" displays a list of structures that contain a 32-bit floating-point value followed by a 32-bit signed integer value. Composite data formats that you have specified are added to the combo box for later use.
A 32-bit floating-point value.
A vector that contains two 32-bit floating-point values.
A vector that contains three 32-bit floating-point values.
A vector that contains four 32-bit floating-point values.
An 8-bit signed integer value.
A 16-bit signed integer value.
A 32-bit signed integer value. Same as int.
A 64-bit signed integer value. Same as int64.
An 8-bit hexadecimal value.
A 16-bit hexadecimal value.
A 32-bit hexadecimal value. Same as xint.
A 64-bit hexadecimal value. Same as xint64.
An 8-bit unsigned integer value.
A 16-bit unsigned integer value.
A 32-bit unsigned integer value. Same as uint.
A 64-bit unsigned integer value. Same as uint64.
A 16-bit floating-point value.
A vector that contains two 16-bit floating-point values.
A vector that contains three 16-bit floating-point values.
A vector that contains four 16-bit floating-point values.
A 64-bit floating-point value.
A 32-bit signed integer value. Same as 4byte.
A 64-bit signed integer value. Same as 8byte.
A 32-bit hexadecimal value. Same as x4byte.
A 64-bit hexadecimal value. Same as x8byte.
A 32-bit unsigned integer value. Same as u4byte.
A 64-bit unsigned integer value. Same as u8byte.
A Boolean (true or false) value. Each Boolean value is represented by a 32-bit value.