Loading Resources from Memory

If you have want to load a resource from a different spot then a hard drive or inside a multifile, say for instance database or network packet you can using a StringStream.

Here is an example that reads and image into data and then uses StringStream to feed that data into the image.

data = open('my-image-file.png', 'rb').read()
# send data over network or any other place and pass it on
p = PNMImage()
p.read(StringStream(data))
tex = Texture()
tex.load(p)

But, you can go one step further. Instead of just loading textures, models, sounds or other data one at a time this way, you can load an entire multifile, which as we learned in the previous section can contain any number of models, textures, sounds and other data.

data = open('my-multifile.mf', 'rb').read()
stream = StringStream(data)
mf = Multifile()
mf.openRead(stream)
vfs = VirtualFileSystem.getGlobalPtr()
vfs.mount(mf, '/mf', 0)
smiley = loader.loadModel('/mf/smiley.egg')