Sign in to follow this  
Followers 0
RLS0812

Dynamically Load Entire Folder Of Textures At One Time

4 posts in this topic

I have recently started playing around with XNA and have run into a problem.
In all the tutorials / help guides I have read, they tell you to "hard code" every texture / image your going to use.

My project has hundreds of textures, which change all the time - Is there a way to load an entire file at once, and can you provide a working example of how to do this in XNA 4.0 ?

Thanks.
0

Share this post


Link to post
Share on other sites
The ContentManager in XNA is the [i]main [/i]route from disk contents to game memory for every asset you want to use. There are a couple options:

1) Write your own importer for the ContentManager that takes a folder name and processes all the internal contents
2) Don't mess with the ContentManager classes, but write utility classes/methods that do dynamic loading/unloading of content and simplify the work for you a bit (these will still have to call ContentManager functions at some level)

The XNA Framework provides high-level but simple and straightforward utilities. Tutorials are only going to target the basic cases for these utilities to show how they're used. It's the difference between "how to swing a hammer" and "how to use a hammer to build a victorian-era gazebo". It's up to the programmer to use those basic tools to build something more complex and fitting to their particular requirements. You could potentially google around for open source XNA projects and see how they set up any kind of abstract asset manager pipeline. I would expect asset I/O to be coupled with game state management (for example, on level switching).

When you say "hundreds of textures which change all the time" are you referring to changing the individual textures' contents, or swapping out textures currently in use?

Edit: Spoke from experience, looks like there are some utility methods that let you deal with filestreams directly, see later post. Edited by BCullis
0

Share this post


Link to post
Share on other sites
I am referring to a 2D level editor, that accepts custom .png textures from the user.
As it is written right now, each user has 6 private resource files ( unlimited textures in each one), and can have unlimited shared resource files ( downloaded from server ).

ContentManager and pipeline searches in Google isn't turning up anything useful as far as dynamic loading / unloading
0

Share this post


Link to post
Share on other sites
Found a [url="http://forums.create.msdn.com/forums/p/84371/508411.aspx"]link[/url] to someone suggesting Texture2D.FromStream, that would let you avoid the need for knowing the asset's "friendly name" at compile time

Note: This won't work on the XBox. Edited by BCullis
0

Share this post


Link to post
Share on other sites
Note that when using Texture2D.FromStream, you will have to handle compression, mipmaps and/or premultiplied alpha yourself, see here: [url="http://forums.create.msdn.com/forums/p/61813/380463.aspx"]http://forums.create.msdn.com/forums/p/61813/380463.aspx[/url]
0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0