Я использую d3d9 для получения backbuffer и сохраняю его в png-файле с помощью библиотеки d3dx:
IDirect3DSurface9 *surface ; // GetBackBuffer idirect3ddevice9->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &surface ) ; // save the surface D3DXSaveSurfaceToFileA( "filename.png", D3DXIFF_PNG, surface, NULL, NULL ) ; SAFE_RELEASE( surface ) ;
Для этого вы должны создать свой swapbuffer с помощью
d3dpps.SwapEffect = D3DSWAPEFFECT_COPY ; // for screenshots.
(Таким образом, вы гарантируете, что backbuffer не искалечен, прежде чем снимать скриншот).