Jump to content
  • Advertisement
Sign in to follow this  
Scythen

OpenGL Does OpenGL have to deal with anything like D3D lost device?

This topic is 4626 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

D3D has to reconstruct unmanaged resources when the device is lost. Also, if the monitor is changed, the device must be completely recreated. Are there any situations like this when using OpenGL?

Share this post


Link to post
Share on other sites
Advertisement
AFAIK there's nothing like lost devices in GL, to use DX terminology, you could say all the resources are placed in the managed pool.

[Edited by - Monder on December 16, 2005 1:56:01 PM]

Share this post


Link to post
Share on other sites
There's nothing like "device lost" in GL (or at least I've never heard of it).
Hovewer, you can loose pbuffer in OpenGL when display mode change occured (see specs). Otherwise I don't know of any resources that can be lost during mode change.

Share this post


Link to post
Share on other sites
Very interesting.

I wonder why Direct3D has "lost" devices then.

How does OpenGL deal with eviction of resources from video memory, does it just buffer everything in system memory? I guess that makes sense as long as the data is accessible to the application too.

And then there is the whole multi monitor thing... D3D forces everything to be recreated from scratch when switching monitors. Why on earth Microsoft would set D3D up this way if it could be so simple. Apparently OpenGL has done a much better job here unless I’m missing something.

Share this post


Link to post
Share on other sites
Some implentations of opengl lose their data(Textures/VBOs/ect) when changeing screen resolutions. I can't remember at the moment a way to see if it happens...

Share this post


Link to post
Share on other sites
Hey,

In my understanding of the system, GL keeps an extra copy of the textures sitting around in system ram. If you have, say, 256 megs of textures sitting on your card, then that's basically sitting on 256 megs of system ram also [and the textures you've most recently used are sitting in copies on the graphics card]. I'm not sure exactly how directX does it, but I would assume that it's similar, except that maybe only the textures that don't fit on the graphics card are swapped to and from video memory.

I'd also think that the DX way of doing things fits more in with the whole user swapping stuff. Getting back a couple hundred megs of system ram when you alt-tab out of the game would make the system much faster and more stable IMO.

Just some thoughts.

--CJM

Share this post


Link to post
Share on other sites
The way Direct3D deals with resources is somewhat configurable by the app. When you create a resource you can usually specify weather it’s a managed resource or not. Managed resources are backed by system memory unmanaged resources are left to the app to deal with.

There are some specific resources that are never managed such as render targets.

When the back buffer swap occurs d3d returns an error code indicating success, lost device, or some other error at which point the app needs to deal with the problem.

The main reason I want to know how OpenGL deals with this is because I'm designing the abstraction layer for a render system and would like to keep the device created/lost/reset/destroyed events internal to the D3D render system.

If however this type of thing occurs in both Direct3D and OpenGL then I won’t work so hard to hide it.

BTW, thanks everyone for your input.

Share this post


Link to post
Share on other sites
I've never heard of it myself. OpenGL binds itself to draw to a specific window, like DX, but every time I've done alt-tab etc... to get out even ina fullscreen app, I never lose any resources. I have heard of the pbuffer thing but since I never use them, it doesn't really apply to me. I think you can just keep that part in DX and hide it from OpenGL.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • 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!