1
Je suis en train de capturer l'écran de jeu, je dois ce code:Comment sauver IDirect3DSurface9 ou LPD3DXBUFFER à la mémoire en format JPG
LPDIRECT3DDEVICE9 Device;
D3DSURFACE_DESC screenDescription;
...
void Capture(){
IDirect3DSurface9* pRenderTarget;
IDirect3DSurface9* pDestTarget;
Device->GetRenderTarget(0, &pRenderTarget);
pRenderTarget->GetDesc(&screenDescription);
Device->CreateOffscreenPlainSurface(screenDescription.Width, screenDescription.Height, screenDescription.Format, D3DPOOL_SYSTEMMEM, &pDestTarget, NULL);
Device->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_FORCE_DWORD, &pDestTarget);
char tName[200];
sprintf(tName, "%s_%d.jpg", "C:\\test", GetTickCount());
D3DXSaveSurfaceToFileA(tName, D3DXIFF_JPG, pDestTarget, NULL, NULL);
//LPD3DXBUFFER buffer;
//D3DXSaveSurfaceToFileInMemory(&buffer, D3DXIFF_JPG, pDestTarget, NULL, NULL);
pRenderTarget->Release();
pDestTarget->Release();
isCapturing = false;
}
Enregistrement de fichier avec D3DXSaveSurfaceToFileA
fonctionne parfaitement, mais je veux sauver image capturée et les écrire à la fin d'un autre fichier sur le disque, ne pas créer une nouvelle fois. Est-il possible comment convertir IDirect3DSurface9
ou LPD3DXBUFFER
à JPG octets?