Jump to content
  • Advertisement


This topic is now archived and is closed to further replies.


Losing focus in fullscreen mode....

This topic is 5458 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

When losing focus in fullscreen mode i.e. tabbing to another application and then coming back, how do you check and restore the surfaces so that it can resume where you left off. Im using C# and Direct3D 9. I jsut want to know how to check for it. Thanks.

Share this post

Link to post
Share on other sites
This function is in C++ but it shouldn't be hard to convert:

//Make sure device is ready for drawing

int CheckDevice ()
HRESULT hResult;

//Get device state

hResult = d3dDevice->TestCooperativeLevel();

//Check device state

if(hResult == D3DERR_DEVICELOST)
//Device is lost. Nothing can be rendered

return FALSE;
else if(hResult == D3DERR_DEVICENOTRESET)
//Reset the device


//Reset render states

d3dDevice->SetRenderState(D3DRS_LIGHTING, FALSE);
d3dDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
d3dDevice->SetTextureStageState(0, D3DTSS_ALPHAOP, D3DTOP_MODULATE);

//Reset vertex shader


//Reset vertex buffer

d3dDevice->SetStreamSource (0, vertexBuffer, 0, sizeof(TLVERTEX));

//Anything created in the DEFAULT pool must be reloaded

return TRUE;

//Device is fine

return TRUE;

Now obviously you'll have to set your own render states, but you get the idea.
Just use it like this:

if (CheckDevice())




As long as you create all your vertex buffers, textures, etc. in the managed pool, the program should restore itself when it gets focus back.

If you have something in the default pool you have to reload it.

[edited by - glassJAw on August 12, 2003 1:53:12 PM]

Share this post

Link to post
Share on other sites

  • Advertisement

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!