Resource Management... Howto?
Samuel Winchenbach
swinchen at eece.maine.edu
Fri Jul 6 13:03:15 PDT 2007
Hi there.
Lets assume I have a number of resources (audio, textures, fonts, etc)
that I am trying to keep track of. I want a number of things to happen:
1.) When something tries to load a resource that isn't already loaded
the resource will be loaded. The resource will be stored in an
associative data structure so resources will be easy to find.
"Something" will be handed back to the requesting code... maybe an int
handle, or an object... I don't know yet.
2.) If an resource is already loaded then it will be found in the
associative data structure and "something" will be handed back to the
calling code.
3.) The resource will automatically be freed (calling any appropriate GL
call to free GPU resources) when code is no longer referencing the
resource...
I have been thinking about this a lot, and I might have an idea how to
do this..
I could have something like:
auto h = texture.loadTexture(...);
... use the texture ...
texture.releaseTexture(h);
and texture keeps a reference count and when it drops to zero it is
removed from the data structure and appropriate actions are taken to
release any system resources.
What I would like is to not have a texture.releaseTexture(). I would
like that to be automatic. Perhaps "h" could be an object with a
destructor that automatically calls "releaseTexture()"? Not sure of
the structure of this....
and what would be best is to have one resource manager that keeps track
of everything loaded...
auto h = resource.loadResource();
but this gets tricky because how do you know what type of resource you
are loading, and how do you set the parameters of the resource.
If anyone has any comments, questions, suggestions, sample code, etc. it
would be greatly appreciated.
Thanks!
Sam
More information about the Digitalmars-d-learn
mailing list