Jump to content

  • Log In with Google      Sign In   
  • Create Account


#ActualBacterius

Posted 16 November 2012 - 12:00 AM

The traditional way of doing it is to literally hook your own code into the rendering code for the game application in question. Basically, immediately before the game draws the final image to the screen, insert some code which'll allow your own application to access it easily (like initialize some shared memory and store the frame there, or something like that). This is how FRAPS does it. It is not trivial, but it's doable. See "directx hooking" on Google.

Other than that, no, I do not believe there are any ready-made API's that'll do what you want. There are window capture functions in GDI, but DirectX/OpenGL windows typically evade those (you only get a black screen) and they are not very efficient.

The crux of the problem being that if you want to get a reasonable recording framerate, you need to capture the game's backbuffer, not the global frontbuffer (which is subject to locks and stalls, and is just generally sucky). Of course you can just bitblt the hell out of it, but don't expect the performance to be up to far with software like FRAPS, or to even work properly at all.

#1Bacterius

Posted 15 November 2012 - 11:58 PM

The traditional way of doing it is to literally hook your own code into the rendering code for the game application in question. Basically, immediately before the game draws the final image to the screen, insert some code which'll allow your own application to access it easily (like initialize some shared memory and store the frame there, or something like that). This is how FRAPS does it. It is not trivial, but it's doable.

Other than that, no, I do not believe there are any ready-made API's that'll do what you want. There are window capture functions in GDI, but DirectX/OpenGL windows typically evade those (you only get a black screen) and they are not very efficient.

The crux of the problem being that if you want to get a reasonable recording framerate, you need to capture the game's backbuffer, not the global frontbuffer (which is subject to locks and stalls, and is just generally sucky). Of course you can just bitblt the hell out of it, but don't expect the performance to be up to far with software like FRAPS, or to even work properly at all.

PARTNERS