DirectDraw - Lost surfaces problems
------------------
~CGameProgrammer( );
Well. I wouldn't be able to anwser your question. I'm 19 and I'm a junior programmer. I'm just beginning to master DirectDraw but mayby someone else here would know the anwser?
Illuna
I've had all shades of trouble trying to get DDraw surfaces to restore correctly. The only thing that's seemed to work is if I Release() all surfaces (including the primary), Release() the DDraw interface, create a completely new DDraw interface, and then create completely new surfaces.
This solution for me was easier than trying to figure out exactly why surface restoring was sketchy, but I'm still curious, so if anyone's seen this and solved it, I'd love to hear about it.
Mason McCuskey
Spin Studios
www.spin-studios.com
The Cuttlefish Engine lets anyone develop great games for iPad, iPhone, Android, WP7, the web, and more!
Then i reload in the data for any video bitmaps.
Also system memory bitmaps don't seem to get lost.
Probably mason is right: I gotta reload all surfaces. Probably many games do this, because if you Alt+Tab to something else, then switch back to their game, it takes several full seconds to restore everything.
------------------
~CGameProgrammer( );
I programmed the code to restore the surfaces if the display mode changed. It works just right but I need to know how to loose a surface otherwise (it works already when I change the resolution of the screen and the color palette). Can you suggest me other ways to loose a surface so I can check my code?
Thanks!
Here is a sample code
BOOL RestoreAll(void){
HRESULT ddrval;
ddrval = lpDDSPrimary->Restore();
if (ddrval==DDERR_WRONGMODE){
// Display mode changed
// No problem here
}
else if (FAILED(ddrval)){
// Random restore failure
// How can I make this case happen?
}
else{
// We're ok retore everything else
// How can I make this case happen?
}
return TRUE;
}