Jump to content

  • Log In with Google      Sign In   
  • Create Account

Dynamically Load Entire Folder Of Textures At One Time


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
4 replies to this topic

#1 Code Fox   Members   -  Reputation: 1810

Like
0Likes
Like

Posted 26 July 2012 - 09:02 AM

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.

Does Anyone Actually Read This ?
 


Sponsor:

#2 BCullis   Crossbones+   -  Reputation: 1813

Like
0Likes
Like

Posted 26 July 2012 - 09:13 AM

The ContentManager in XNA is the main 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, 26 July 2012 - 09:56 AM.

Hazard Pay :: FPS/RTS in SharpDX
DeviantArt :: Because right-brain needs love too

#3 Code Fox   Members   -  Reputation: 1810

Like
0Likes
Like

Posted 26 July 2012 - 09:33 AM

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

Does Anyone Actually Read This ?
 


#4 BCullis   Crossbones+   -  Reputation: 1813

Like
0Likes
Like

Posted 26 July 2012 - 09:55 AM

Found a link 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, 26 July 2012 - 09:58 AM.

Hazard Pay :: FPS/RTS in SharpDX
DeviantArt :: Because right-brain needs love too

#5 laztrezort   Members   -  Reputation: 972

Like
0Likes
Like

Posted 26 July 2012 - 10:15 AM

Note that when using Texture2D.FromStream, you will have to handle compression, mipmaps and/or premultiplied alpha yourself, see here: http://forums.create.msdn.com/forums/p/61813/380463.aspx




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS