* This code was significantly different from the old code, enough that it made more sense to re-implement from scratch than modify the old code. * Note it doesn't compile yet and is not included in any projects. * We have a hookset per GL interface - WGL, GLX, and stubbed out CGL for mac. In addition we have EGL which can be compiled in at the same time as the others. Each interface has a dispatch table similar to GL for handling its hooks all together. * The platform hooksets hook their platform-specific functions like createcontext, swapbuffers, and makecurrent. For getprocaddress they can call into a common function that looks up general GL hooks. * EGL and GLX can populate the GL hooks using eglGetProcAddress / glXGetProcAddress as soon as the library is loaded, but for WGL we must wait until the first time a context becomes current. * We also have an implementation of GLPlatform per type. This takes care of work that is platform specific - mostly during replay but also somewhat during capture. This is kept separate from the actual hooks. * On replay we have a platform-specific replay create entry point which populuates the relevant dispatch table and calls into a general replay create. This will do most common work together but calls out to the GLPlatform implementation to do actual initialisation of the API.
RenderDoc is a frame-capture based graphics debugger, currently available for Vulkan, D3D11, D3D12, OpenGL, and OpenGL ES development on Windows 7 - 10, Linux, and Android. It is completely open-source under the MIT license.
If you have any questions, suggestions or problems or you can create an issue here on github, email me directly or come into IRC to discuss it.
To install on windows run the appropriate installer for your OS (64-bit | 32-bit) or download the portable zip from the builds page. On linux there is a binary tarball available, or your distribution may package it. If not you can build from source.
- Downloads: https://renderdoc.org/builds ( Symbol server )
- Documentation: HTML online, CHM in builds, Videos
- Contact: baldurk@baldurk.org, #renderdoc on freenode IRC
- Code of Conduct: Contributor Covenant
- Information for contributors: CONTRIBUTING.md, Compilation instructions, Roadmap
Screenshots
|
|
|---|---|
|
|
API Support
| Windows | Linux | Android | |
|---|---|---|---|
| Vulkan | ✔️ | ✔️ | ✔️ |
| OpenGL ES 2.0 - 3.2 | ✖️ | ✔️ | ✔️ |
| OpenGL 3.2 - 4.6 Core | ✔️ | ✔️ | N/A |
| D3D11 & D3D12 | ✔️ | N/A | N/A |
| OpenGL 1.0 - 2.0 Compat | ✖️ | ✖️ | N/A |
| D3D9 & 10 | ✖️ | N/A | N/A |
| Metal | N/A | N/A | N/A |
Downloads
There are binary releases available, built from the release targets. If you just want to use the program and you ended up here, this is what you want :).
It's recommended that if you're new you start with the stable builds. Nightly builds are available every day from master branch here if you need it, but correspondingly may be less stable.
Documentation
The text documentation is available online for the latest stable version, as well as in renderdoc.chm in any build. It's built from restructured text with sphinx.
As mentioned above there are some youtube videos showing the use of some basic features and an introduction/overview.
There is also a great presentation by @Icetigris which goes into some details of how RenderDoc can be used in real world situations: slides are up here.
License
RenderDoc is released under the MIT license, see LICENSE.md for full text as well as 3rd party library acknowledgements.
Contributing & Development
Building RenderDoc is fairly straight forward. See CONTRIBUTING.md for more details.
I've added some notes on how to contribute, as well as where to get started looking through the code in CONTRIBUTING.md.
