Re: [GD-General] Frame Capture
Brought to you by:
vexxed72
From: Jon W. <hp...@mi...> - 2006-09-01 17:52:40
|
Gaël LEQUEUX wrote: > > Several years ago I was confronted to this problem with a rendering > based PVS system. At that time my best solution was to write a memcpy > using movaps from AGP Memory to System mem but I'm sure there is > faster solutions. FRAPS for example is doing great (~30 FPS how ?). > > So the basic question is: "how should I transfer my render target to > system memory". > First, make sure you have a PCI-Express system and card. PCI-Express is much faster than AGP for read-back. Second, make sure you benchmark the readback performance of various cards, as various models and various vendors have different implementations. Third, the actual transfer method is likely to mostly be dependent on the system and the hardware, rather than the specific calls you're making. That being said, I would benchmark the difference between locking a render target and doing memcpy() (ideally using 64-bit reads, i e use doubles or better for copying), versus using IDirect3DDevice9::GetFrontBufferData(), versus using IDirect3DDevice::GetRenderTargetData(). It's also likely to be useful to double-buffer the getting -- i e, start render the backbuffer, and only call GetFrontBufferData() right before you Present() the back buffer, and similar for the other methods (which may require creating multiple render targets). So, get a PCI-Express machine, get a GeForce 7950 GX and a Radeon X1900 (or whatever the latest and greatest is), code up the three different paths, and benchmark each combination. Please post back your result :-) Cheers, / h+ |