Quote:The first holdup for this, assuming it is a valid proposal, is being able to reliably determine if a texture is in the video memory. Given that glAreTexturesResident() does not always work, what other options are there?None that work reliably. Figure out how much texture memory you have available (you will have to use a platform dependant API), and then only load that much texture data into OpenGL, paging textures in and out as necessary.
This may give you even greater performance gains than you would imagine. Moving data from main memory to the card is pretty darn fast - I would guess that some of the textures not currently on the card are being swapped out by the VM subsystem, which means they have to be swapped back from the disk.
Quote:I do not know if there are canonical solutions for this, but as I said previously I would be interested in exploring the technique of showing a small substitute placeholder texture until I have the large texture available in the video RAM.The best way to do this is to store your textures in a format like DDS, with pre-calculated mipmaps. Then you can stream in the mipmaps, manipulating GL_TEXTURE_BASE_LEVEL to use only the currently loaded levels.