José Fonseca and Zack Rusin have spent the last several months writing ApiTrace, which formerly was known as GLretrace. This is meant to be a powerful utility to debug OpenGL and Direct3D graphics applications and drivers. It allows you to easily capture the graphics API calls, analyze them in a step-by-step manner, and to playback traces at a later point. ApiTrace also allows for real-time editing of shaders and other OpenGL/Direct3D calls to see their impact on the rendering and drivers.
From the ApiTrace 1.0 release announcement
, "FYI, over these past months I've been continuing to improve glretrace on my spare time, and lifted several of the previous limitations: added support for DrawArrays/Elements with user pointers; Map/UnmapBuffer; more extensions; several bug fixes. To the point that a great deal of GL apps trace & retrace flawlessly (tested e.g., Quake3, Unigine Heaven, Cinebench R11, Autodesk Maya)."
What makes ApiTrace even more powerful is that Zack Rusin wrote a QT user-interface to ApiTrace that allows exploiting all of these features from a very-easy-to-use interface. "Warning: this GUI is not the cherry on top of the cake, it's the whole sugar coating and it will make you salivate like a rabid dog! It allows to view the traced calls, view the state (parameters, shaders, textures, etc) at any call, and edit the calls, and more. Pretty amazing stuff, useful both for GL users and implementers."
Zack Rusin wrote this blog post
where he talks about ApiTrace and his Qt GUI in length. There's also many screenshots of this program. If you're involved at all with graphics drivers or OpenGL/Direct3D programs, it's definitely worth trying out ApiTrace.