So it’s been almost a year and I have finally got around to finishing a new version of my screen capture project that supports Direct3D 9, 10, and 11! This solution still uses SlimDX for the Direct3D API wrapper along with EasyHook to perform the remote process hooking and IPC between the host process and target process.
Some of the changes since the previous version:
- 100% C# implementation
- Added Direct3D 10 and 11 support
- Capturing multi-sampled/anti-aliased images (for 10 & 11) is supported
- Re-organised code making it easier to support multiple D3D versions
- Implemented a new and improved test bed application
- Provided example overlays for D3D 9 and 10
- Improved debug messaging from Target application to Host (mostly removed when compiled with “Release” configuration)
Update 2012-04-14: code now hosted on Github
Continue reading C# – Screen capture and Overlays for Direct3D 9, 10 and 11 using API Hooks
Since investigating screen capture techniques for Direct3D 9 applications a year ago I have wanted to look into hooking the Direct3D 9 API to utilise the much faster GetBackBuffer for my screen captures. Well here it is at last – a mostly managed C# solution providing easy and safe hooking of the Direct3D 9 API thanks to EasyHook, supporting both 32-bit and 64-bit.
Continue reading C# – Screen capture with Direct3D 9 API Hooks
As a follow up for C# – Screen capture with Direct3D, here is how to enable and disable composition (Aero) on Windows Vista and Windows 7.
Continue reading C# – Enable / Disable DWM Composition (Aero)
When I was researching for this article, I noticed some passing references to the Vista DWM (Desktop Window Manager) and the ability to use it to capture images of windows — DWM is the technology behind Windows Aero and its window switching features like Flip3D. I filed this away as something to look into at a later date.
Continue reading C# – Screen capture with Vista DWM (Shared Direct3D Surface)
After finally installing Vista Home Premium at home, I found that a C# utility I had created for capturing a region of the screen suddenly stopped working reliably for windowed Direct3D applications.
Continue reading C# – Screen capture with Direct3D