   DX9 Best way to move big images
  Hi,can somebody give me a suggestion how to zoom into/out a big image?I have an image (~3456x2034), which i want to display on fullscreen (~1920x1080) and zoom into/out of it. For testing, i have written a minimal program with a viewpoint that does not move and the image/texture moving away/coming closer. Unfortunately the image stutters/jerks (hope this is clear) when it is nearly the full screen size. I did some things to get rid of this:Decrease the Resolution: Helps but it should work on fullscreen.Use MipMapping: Decreases the stuttering, but still it existsUse Different filters:  D3DTEXF_NONE, D3DTEXF_POINT, D3DTEXF_LINEAR, D3DTEXF_GAUSSIANQUADFinally changed the LOD-Bias: Now i can get rid of the stutter (Lod-Bias > 1.0) but there is abig loss of quality, the image gets blurry.Did i do the right things, what else can i do? Perhaps can somebody tell me more about what happens on the card (ATI Radeon 2400 HD 512MB), when the texture is processed and why it stutters.Thanks[Edited by - shine47 on May 28, 2010 2:38:58 AM]
  Is this a single large texture? If so, and it's 32-bit, it's using 27MB of VRAM (Assuming your GPU doesn't have any extra padding because it's a non-power-of-2 texture) - which is a not insubstantial size.I'd recommend cutting it into multiple smaller textures, maybe 512x512 in size, and using a compressed texture format if possible.   ;  I'm guessing that the reason this is happening is because your graphics chip is running HyperMemory. Basically, that means that although you think you have 512MB graphics memory, you in fact only have something like 16 or 32 MB. The rest is taken from very slow system memory. You can verify this by opening Catalyst Control Center, opening "Graphics Hardware" under "Information Center". There would be a line saying "Memory Type HyperMemory" in the box to the right.This would explain why changing the LOD bias works. When you change LOD bias, you effectively pick another (lower) mipmap, which lessens the memory usage to a quarter of what it was.So, if this is the case, there are some things you could try (and all of them involve lessening the memory strain). - Use a compressed pixel format for the texture, for example DXT1- Use fast texture filtering: D3DTEXF_LINEAR for Min/Mag, but D3DTEXF_POINT for Mips.- Use a lower quality pixel format for your frame buffer if possible (old sk00l 16-bit with dithering, for example)- Don't use a Z-buffer at all, just color buffers- Don't use double buffering (It should be fast enough to blit the entire image in full screen and still avoid tearing without using double buffering.)- Don't use a multisampled backbuffer- Split the image into smaller textures (for example 64x64 or 128x128 ones), and only draw the ones that are visible on the screen. AFAIK HyperMemory moves the entire textures between memories. So, if the entire thing won't fit in GPU memory, it gets pushed into system memory. By splitting up the image into smaller chunks, it will only stream in the visible parts. This might help since your image is a lot bigger than your backbuffer. Watch out for seams between the images, caused by bilinear filtering.You should definately keep using mip-mapping, it will be especially helpful when zooming out.Hope some of this helps and good luck :)[EDIT] Sorry, Evil Steve beat me to it :)   ;Quote:Original post by simonjacoby[EDIT] Sorry, Evil Steve beat me to it :)Still thanks for the info. I had no idea hypermemory meant you have that little physcial video memory.;  Catalyst tells: Memory Size 1407 MB, Memory Type HyperMemory. Thats the same values i get from Directx GetAvailableVidMem, but i think at least this card should have 128-256MB native VRAM (Source Wikipedia), so the texture fits in as a whole. Thank you for your help, i will try your suggestions soon.   ;  Thank you very much: "Use fast texture filtering: D3DTEXF_LINEAR for Min/Mag, but D3DTEXF_POINT for Mips." that did the trick without decreasing the quality too much.   