Jump to content
  • Advertisement
Sign in to follow this  
fredrum

No more mirror drivers in Win8 - Need much faster bitblt!

This topic is 1510 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I was looking into windows 'mirror drivers' as a faster alternative to bitblt, which is way too slow for my purpose.

I now read that they are prohibited from Windows 8.0 onwards. :(

 

Does anyone know of a fast (0-1ms) way to do screen grabs on windows?

 

 

Cheers

Share this post


Link to post
Share on other sites
Advertisement

I was looking into windows 'mirror drivers' as a faster alternative to bitblt, which is way too slow for my purpose.

I now read that they are prohibited from Windows 8.0 onwards. sad.png

 

Does anyone know of a fast (0-1ms) way to do screen grabs on windows?

 

 

Cheers

 

 

If you need to grab entire desktop, you may use DX9Ex GetFrontBufferData - it's fast.

Be more specific what you want to grab, entire desktop, just your app window content (if content is rendered via d3d, you can simply read back backbuffer - that - with proper swapchain setup should be very fast)

Share this post


Link to post
Share on other sites

I am looking for something that can either grab the whole windows desktop, or just the contents of a given window.

(Ideally also something like a game running in fullscreen/own screen mode but that is not the immediate priority for now.)

And yes, speed is of the essence and it would be great if the method worked for different windows versions / graphics cards etc, so that I could know that it would work on most peoples setups.

 

cheers

Share this post


Link to post
Share on other sites

I am looking for something that can either grab the whole windows desktop, or just the contents of a given window.

(Ideally also something like a game running in fullscreen/own screen mode but that is not the immediate priority for now.)

And yes, speed is of the essence and it would be great if the method worked for different windows versions / graphics cards etc, so that I could know that it would work on most peoples setups.

 

cheers

 

I'v used to used DX9Ex and GetFrontBufferData (initialize d3d with HWND of desktop, but do not render anything, just call GetFrontBufferData to grab entire desktop)

It works nicelly on windows 7 & 8 (will break for metro apps).

If you want to grab your OWN game, then the best way is to modify game code and write grabber inside, if you want to grab 'that other game' maybe the best way is dll injection

into game code and dx9/dx10/dx11 grabbing (but this is hell lot of code). But in you place I'll give a try to GetFrontBufferData and see if performance is high enough.

Share this post


Link to post
Share on other sites

Great guys (guy? mxadd-addmx) thanks so much for the pointers I will try these methods out now!

 

 

EDIT: just tried this and when I time it I get 35ms which unfortunately is much too slow for my needs.

Does that figure sound plausible?

 

 

Cheers

Edited by fredrum

Share this post


Link to post
Share on other sites

Great guys (guy? mxadd-addmx) thanks so much for the pointers I will try these methods out now!

 

 

EDIT: just tried this and when I time it I get 35ms which unfortunately is much too slow for my needs.

Does that figure sound plausible?

 

 

Cheers

 

yes ... I'v got around 20ms on 680GTX a while back (full HD screen capture) - it's slow but universal.

The faster alternatives exist but more code is need - if you have application code and can acces backbuffer, then reading back backbuffer will be WAY faster, else you need dll injection into application (or similar technique), to inject your code just before 'Present' call (inside 'fake' Present actually). 

If you need capture whole desktop I'm affraid you are doomed :|

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!