Programación Específica > DirectX
Alt+tab
(1/1)
Neko-sama:
Holas!
He estado mucho tiempo tratando de resolver el problema de no perder el dispositivo cuando estoy usando el juego en fullscreen y presiono ALT+TAB para minimizar la aplicación y despues vuelvo al juego pero igual se pierde...
lo uso de la siguiente manera... (resumen del codigo)
hr = g_pd3dDevice->TestCooperativeLevel();
if(hr == D3DERR_DEVICENOTRESET) {
hr = g_pd3dDevice->Reset(&d3dpp)
}
bueno... no hace el reset y siempre me entrega el mismo error: D3DERR_INVALIDCALL
donde está el problema??
tengo que hacer mas cosas antes??
agradecería mucho la ayuda :D
Amilius:
Hmmmmm.... ¿Ya restauraste superficies?
Si pasas de "fullscreen" a modo cooperativo inevitablemente pierdes superficies alojadas en memoria de video, asi que tienes que restaurarlas.
Puedes restaurarlas o volver a construir las superficies que perdiste pero de lo que no te salvas es de copiar nuevamente su contenido de memoria de sistema a video (si tenías una copia en memoria de sistema), o cargarlas nuevamente de disco.
JuanK:
Tal como lo ha dicho amilus,
agregaria que seria cionveniente que en tu constructor tuvieras el llamado a una funcion que creara las superficies, de tal manera que al ocurrir la excepcion, la atrapas y vuelves a llamar la funcion de creacion.
Una pregunta.. porque as esto?.. no seria mejor que no nse destruyera esa info?
Neko-sama:
yo no hago nada... como dice Amilius, la tontera se pierde nomas!
solo trato de resolver el problema del ALT+TAB...
como lo hacen ustedes??
yo estoy usando direct 3d asi que no uso superficies... y vi que el modo de hacerlo es de la forma que lo mostré... pero no consigo el resultado esperado...
supuestamente en esta linea.... -->
hr = g_pd3dDevice->Reset(&d3dpp)
le paso el D3DPRESENT_PARAMETERS donde ya fue cargado todo pero igual tiene problemas...
puede que esté haciendo todo mal...
por eso me gustaría saber como lo hacen ustedes para saber donde tengo que arreglarlo
Navegación
Ir a la versión completa