   [.net] Looking for implementation advices
  Right now I am working a project dealing with image-base rendering.There's 36 sets of images 1 for every 10 degrees so when the user rotate the camera the image textures would be updated with the correct set.However, each set has about 15 layers of images with alpha channels layed out in z-axis.I have compressed the textures to .dds format but its still around 300kb per image as its about 600 by 400 pixels.Right now I am using TextureLoader.Fromfile() function to load each image into memory in the start of the program. Obviously it takes forever right now for the program to get started.I was thinking of maybe loading the images onto the physical memory first and load the set that the user is viewing or about to view into the video memory.I am still pretty new to C# and DirectX so if anybody has any ideas to accomplish this please let me know.   
  could just load em as you need em in a texture buffer, should give ya more speed to, unfortunently I am not at home and don't have me texture buffer infront of me so can't really help you with the code. Maybe someone else can give you the code or explain it, if not just pm me and I will send it to you on thursday when I get back   ;  I assume you don't actually have 600 x 400 but rather 512 x 512 or similar power-of-two dimensions (not necessarily squared) and that the images are compressed using DXTn sub-formats.In this case, a 512x512 texture would be 256kb (DXT1) or 512kb (DXT3,5) in size. 36 sets of images times 15 layers will take up540 x 256kb or 540 x 512kb, wich results in 135mb or 270mb texturedata.Now say you really have 256mb VRAM on your gfx card (which wouldbe awesome, I "only" have 128mb on my card ;) ) it is quite obviousthat it is practically impossible to significantly speed up loadingof the complete dataset.You also need to consider the fact that - as long as your gfx cardcannot provide 256mb texture memory - most of your textures will reside in AGP memory and therefore need to be uploaded to vramquite often. This and size mismatches (D3D will scale yourtextures during load if your card doesn't support non-power-of-two textures) as well as lack in compression (DXT)will hurt performance for both, loading and rendering.As JMOmandown suggested, you should stream your data in order to reduce loading time.You could load three sub-sets  (e.g. 0°, 10° and 350°) and depending on camera changes select the next dataset andpre-cache (read: load) the next sub-set by replacing a currentlyinvisible one. Thus only 15 layers will be loaded on-demand at runtime (e.g. about 4mb of data) and only 3 subsets will bein vram.Think of this example illustrates the pre-caching:- You load the 0°, 10° and 350° subsets at startup.- Initial camera requires 0° to be rendered.- Camera turns east and 10° dataset is active. 350° dataset is   replaced with 20° dataset as it is much more likely to be   activated (as long as your camera movements are somewhat   linear).- Camera turns west, 0° dataset is active, 20° subset is replaced  with 350° data again.I hope you get the picture :)Loading should ideally be placed in a seperate thread.The driver's and OS' internal caching mechanisms will alsospeed up the pre-caching approach, as data that was already loaded once is very likely to reside in OS/driver cache.Hope this makes sense,Pat;  Thanks for the detailed reply.I was actually doing something like you suggested, loadingeverytime the user changes the camera view but I was stillusing 15 TextureLoader.Fromfile() calls so it was pretty slow.I been thinking of actually loading the entire dataset into system memory first using C# image class and memorystream. Then use TextureLoader.FromStream() to update the texture buffer when needed.Do you think this is feasible ? I don't mind the long loading time at startup time but I would like as less loading time as possible during runtime since this is a demo program.   ;  Depends on the system, for newer systems it is very possible, might add to the startup time though   