hola buenas,
vamos a ver, el problema que tengo es que no se como capturar
el buffer de directx y que no se note un salto en el juego.
me explico
por ejemplo hago esto
SYSTEMTIME st;
char szFileName[256];
HRESULT hr = S_OK;
LPDIRECT3DSURFACE9 backBuffer,surface;
LPDIRECT3DSURFACE9 surf,dest;
char filename[64];
GetSystemTime( &st );
//
sprintf( szFileName, "%d%d%d%d.bmp", st.wHour, st.wMinute, st.wSecond, st.wMilliseconds );
hr=device->GetBackBuffer (0,0,D3DBACKBUFFER_TYPE_MONO,&surf);
if( FAILED( D3DXSaveSurfaceToFile( GetDirectoryFile( szFileName ), D3DXIFF_BMP, surf, NULL, NULL ) ) )
return false;
lo meto antes del present y por ejemplo capturo con eso
cada 5 minutos una captura del juego, bueno el problema
es que al hacer el D3DXSaveSurfaceToFile que copia en disco
pega el juego un salto (se queda parado 1 o 2 seg), y yo no quiero que pegue ningun salto
he estado mirando otras utilidades para esto como fraps
y no pega ningun bote al hacer la captura, por lo que
debe ser algo que se me escapa
con frontbuffer etc igual pega un bote muy molesto en el juego
alguien sabe como capturar sin que pegue bote?
yo he pensado en meter la grabacion de backbuffer en un hilo
y probar pero no se si eso es correcto.
mi programa depende mucho de esta funcion, y estoy encasquillado
ahi :///
en winxp por medio de la api puedo capturar y va perfecto
pero en vista me salen las screens en negro, por lo que
yo creo que la unica solucion es capturar por directx pero
con esos saltos no lo puedo usar aun
alguien que me heche un cable por favor?
un saludo
ok con hilos parece que va bien, sino encuentro otra manera
creo que me quedo con esta
un saludo