DX Explorer provides a number of features for investigating and debugging DirectX 9 applications via a powerful, yet simple to use interface which is integrated into which ever application it is used with.
It is designed to be used by anyone who has an interest in 3D computer graphics, ranging from experienced game developers, to students who are only just venturing into the world of 3D graphics programming.
It requires no form of code integration or instrumented driver, works with both NVIDIA and ATI hardware, and can be used with almost any existing DirectX 9 application (including standard DirectX 9, and also Managed DirectX or XNA).
DX Explorer’s most powerful feature is its real time frame debugger. The frame debugger allows the user to step through the build up of a frame, call by call, investigating the arguments passed to each, whilst giving immediate visual feedback by displaying the current state of the frame.
Latest Version: DXExplorer 0.4.0
0.3.5 – ( 19 / 10 / 2008 )
- Added hooks for IDirect3DStateBlock9 so that state block calls are recorded and played back in debug mode. (Solves issues with * ID3DXSprites, ID3DXFont etc)
- Improved Vertex and Index buffer hooking, for faster debug capture
- Fixes for Texture creation in debug mode (prevents a number of crashes in some games)
0.3.4 – ( 15 / 10 / 2008 )
- Added “Call Time” and “CPU Idle” For currently selected call in debug mode. “CPU Idle” displays the amount of CPU time wasted on calling a Direct3D call before the device is ready.
- New launcher with new theme and minor bug fixes
0.3.3 – ( 12 / 10 / 2008 )
- Zoom function for zooming in on a specific area of the back buffer or any render target
- Screenshot function (printscreen)
- PIX Plugin support for graphing low level GPU performance data.
0.3.2 – ( 24 / 09 / 2008 )
- Added tooltips for most menu items
- Added new draw modes for highlighting which geometry uses which vertex / pixel shader versions
0.3.1 – ( 16 / 09 / 2008 )
- Sampler State display for viewing and modifying sampler states ( Currently only Sampler 0)
- Fixed bug which occasionally caused the program to crash when maximising while frame textures were displayed
- Help Menu, with tooltips (F1)
- Improved texture filename display to display filename if a texture is created just after reading a file, as well as when D3DX texture loading calls are used. (Note, this will still not work for all applications).
- Unhandled Exception filter, for saving minidump files to assist with debugging.
- (Please include the dump file, a short description and the DXExplorer version you are using with any bug reports)
Version 0.3.0 – ( 08 / 09 / 2008 )
- Texture list now displays total texture memory used for the current frame
- Added graph option for texture memory
- Graph data sets are now saved out to a CSV file for easy analysis
- Improved “call picking” in debug mode
- Improved mouse and keyboard input
- New render state display option for viewing and overriding the current value of any render state
- Improvements to object selection: now works better with render targets
- Installer option to add DXExplorer option to windows explorer context menu
- Minor bugfixes to DXExplorer launcher
To get started with DirectX Explorer, simply run DXExplore.exe, browse to a DirectX 9 executable, then click “Launch”.
Note: Many games have a shortcut, which actually launches an executable in a sub directory of the main game directory, such as /system or /bin.
If you are still having problems, DXExplorer can also be used as a proxy dll, which allows it to be used with some games which the default injection method does not work with. To use it in this way, simply click the ”<” button, check the “Proxy DLL” option, and select the games working directory. Note that the working directory may not always be the same directory as the executable which you launch (eg it may be up a level if the exe lives in the “bin” directory).
The frame debugger may be activated via the DXExplorer menu in the top right, or via its shortcut key (Ctrl-Z by default)
The Frame debugger allows you to debug the current frame, using a scroll bar to scrub through each call that was made in building up the frame.
For each call, its name and arguments are displayed.
You may also mouse over the arguments of many calls to get more detailed information on them. For example mousing over the arguments for a SetTexture call will give you dimension and format information about the texture being supplied.
In this mode you may also select geometry in the scene to jump to that draw call. You may find this feature easier to use when “Draw All Calls” is enabled (Ctrl-3 by default).
The types of calls which are displayed may be filtered via the “Filters” sub menu in the “Debug Options” menu. For example you may want to hide all calls except for draw calls so that you can easily focus on them.
Texture and Surface Viewing
View the textures that are bound at any given point in a frame. You may also view all textures used in the current frame by selected “Frame Textures” from the display menu.
Textures may be displayed in a number of different list styles including different image sizes, and a list view which may be sorted by texture format or size for easily highlighting all large textures used in the scene. Hovering over an image in the list will display extra information.
While in debug mode, you may also click and hold on a texture to display all calls which use that texture, or double click on a texture to jump to the first call which uses it.
View all Surfaces / Render Targets that are being used in the current frame.
Texture and Surface Saving
Right click a texture or surface to save it to a DDS file.
Graph various statistics while the application is running, including poly count, FPS, DirectX/Draw call counts, VRAM usage and more.
Adjust Game Speed
Adjust the speed of the game (Ctrl + [ and Ctrl + ] by default) to move quickly to a required location, or to focus in on something in slow motion.
Force Render Modes
Force all draw calls to display in a number of different wireframe modes, display mipmap levels, or draw normally.
Scene Dumping (WIP)
Dump the current scenes geometry, textures and shaders to disk. These are placed in a directory named “DXExplorer” in the applications working directory.
Geometry is saved to OBJ format, textures are saved to DDS and TGA, and referenced in a MTL file. Vertex and Pixel shaders are also saved for reference in the “Shaders” directory.
When dumping a scene to disk, any textures which were loaded via D3DXCreateTextureFromFile will be referenced instead of saved. This greatly increases the speed at which a scene may be saved.
Note: This feature is very early in development and may not work correctly in many games.
Render State Investigation
View all current render and texture state values, at any point in any frame.
(customizable in dxe_options.txt)
(May be called in any mode)
- F1: Help
- Ctrl-Z: Debug next frame
- Ctrl-Q: Show / Hide GUI
- Ctrl-S: Toggle display of statistics on/off
- Ctrl-R: Toggle display of render target list on/off
- Ctrl-T: Toggle display of texture list on/off
- Ctrl-X: Toggle render mode
- Ctrl-G: Toggle graphs on/off
- Ctrl-]: Increase game speed
- Ctrl-[: Decrease game speed
- Ctrl-P: Reset game speed
- Ctrl-Shift-W: Override camera
- Ctrl-Shift-R: Reset camera
- Ctrl-0: Increase camera speed
- Ctrl-9: Increase camera speed
- WASD and QE: Translate camera (In Debug Mode, or when Override Camera is enabled)
(May only be used while in debug mode)
- +/-: Advance by one calls
- Ctrl-+: Advance by a single frame
- >: Advance by 50 calls
- R: Save detailed call log to dxe_frameCalls.txt (For the frame currently / last debugged)
- Ctrl-C: Show/Hide DXExplorer Cursor (May be needed depending on how the game handles the cursor)
- Ctrl-D: Dump current scene to an obj file (also saves all textures used in the scene)
- Ctrl-V: Toggle “Visual Dump” on/off
- Ctrl-2: Toggle current debug call wireframe mode
- M: Enable / disable current call
- N: Re enable all calls
- Ctrl-A: Toggle displaying the border of the current viewport
- Ctrl-F: Toggle forced clearing of all render targets the first time they are used (Use this if scrubbing in debug mode does not seem to be working)
- 1: Get Calls
- 2: Lighting Calls
- 3: State Calls
- 4: Create Calls
- 5: Set Calls
- 6: Draw Calls
- 7: Other Calls
- 0: Hide all calls except draw calls
- Dynamic Write Only buffers may not render correctly in debug mode.
- Dumped OBJ files may contain invalid vertex data in many cases.
DXExplorer should work with virtually any DX9 application. Below is a list of some of the applications that have been it has been successfully tested with. Please feel free to email any games or programs which you have difficulty using DXExplorer with, and we will do our best to fix any issues in future updates.
( * = Requires use of “Proxy DLL” option )
- 3D Mark 2006
- Age of Empires 3
- Bet on Soldiers
- Bet on Soldiers
- Call of Duty 4
- Call of Duty: World at War
- City Life 2008
- Civilization IV
- Command & Conquer 3 Tiberium Wars *
- Company of Heroes
- Dark Messiah of Might and Magic Demo
- Dawn of War
- Dawn of War: Dark Crusade
- Dawn of War: Winter Assault
- Dawn of War: Soulstorm
- Devil May Cry 4
- EVE Online
- Fable – The Lost Chapters (PC)
- FIFA 08
- Google Earth (in DirectX mode)
- Guild Wars
- Half Life 2 *
- Half Life 2: Lost Coast *
- Heroes of Might and Magic 5
- Hitman: BloodMoney
- Kung Fu Panda
- League of Legends *
- Left 4 Dead
- Lineage II
- Live Search Maps
- Lord of the Rings: Battle for Middle Earth 2
- Majesty 2
- Mass Effect
- Mount & Blade
- Need for Speed: Most Wanted
- Need for Speed: Pro Street
- Need for Speed: Underground 2
- Prince of Persia: Warrior Within *
- Pro Evolution Soccer 2008
- Pro Evolution Soccer 2009
- Savage 2
- Settlers 6 Demo
- Spore Creature Creator
- Supreme Commander
- Team Fortress 2 *
- The Elder Scrolls IV: Oblivion
- The Guild 2
- The Settlers II – 10th Anniversary
- Titan Quest
- Tomb Raider – Anniversary
- Tomb Raider – Underworld
- Two Worlds
- Unreal Tournament 3
- Warhammer: Mark of Chaos
- Warhammer Online
- World in Conflict
- CryEngine 2
- Neo Axis
- Unreal Engine 3
This is the development site for sandbox, a team of engineers + artists dedicated to the exploration of game development. Currently we are working on several titles for iPhone, PC and XBOX as well as some exciting new technology to make game development easier and faster. We are from Perth, Western Australia and we like good coffee.