1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
void CopieEcran(IDirect3DDevice9* pd3dDevice,wchar_t* nomfichier)
{
fwprintf_s(g_pDebugFile, L"-------- CopieEcran() -------- \n" ); // debug vers fichier
HRESULT hr = NULL;
LPDIRECT3DSURFACE9 Surface = NULL; // Surface de destination
if (DXUTIsWindowed()) // mode fenêtré
{
// Récupération du backbuffer
VerifHR( pd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &Surface) );
// Sauvegarde de la surface dans le fichier
VerifHR( D3DXSaveSurfaceToFileW(nomfichier, D3DXIFF_JPG, Surface, NULL, NULL) );
}
else // plein écran
{
// la surface doit impérativement avoir les dimensions du device
hr=pd3dDevice->CreateOffscreenPlainSurface( GetSystemMetrics(SM_CXSCREEN)
,GetSystemMetrics(SM_CYSCREEN)
,D3DFMT_A8R8G8B8
,D3DPOOL_SYSTEMMEM,
&Surface
,NULL
);
// acquiert les données du front buffer
VerifHR( pd3dDevice->GetFrontBufferData(NULL, Surface) );
// Sauvegarde de l'image dans un fichier, au format JPG
VerifHR( D3DXSaveSurfaceToFile(nomfichier, D3DXIFF_JPG, Surface, NULL, NULL) );
}
if ( Surface ) SAFE_RELEASE(Surface);
return;
} |
Partager