Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





velocidad de screenshots en directx

Iniciado por SKoN, 29 de Junio de 2007, 06:30:55 PM

« anterior - próximo »

SKoN

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
KoN






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.