BlitzMax doesn't necessarily KEEP copies of your images as pixmaps. When you load images from an image file it has to put it into a pixmap first, then it uploads it into an image, then it gets rid of the pixmap.
If you want to you can load into a pixmap yourself and then convert the pixmap into an image - which means, taking the pixmap data and placing a copy of it in video ram as an image, so then you have two copies.
Blitzmax does not manage when the textures are kept in video ram or when they get spooled out to main memory or anything else. That is handled by the OpenGL driver or probably by DirectX also. In OpenGL, which requires the images be in video ram for it to work on them, will probably keep the `most used` or `most recently used` images in video ram and put the rest out to main memory if there is no enough vram to hold them all. Then when you use an image, and it's not in video memory, it will spool it back in from main memory and probably swap something else out. That's all managed by the OpenGL driver, for example, not by blitzmax. In OpenGL you can prioritize certain textures or say that some should remain resident in video memory and not be spooled out, but that's not something that I think blitzmax makes use of it addresses or gives you commands for. You'd have to do your own OpenGl programming. No idea about dx.
There is a `prioritize this and keep it in video ram is possible` thing in OpenGL but I don't think max makes use of it at all. I think it just leaves it up to the driver to determing where it keeps the data that it works on.
In order for OpenGL to work on an image or use it as a texture it HAS to be in video ram, or at least has to have been uploaded as a texture/image and spooled off to memory somehow - but all within OpenGL's realm of control. Max does not manage whether or not to transfer pixmaps to video ram based on ram availability or anything like that. You either have a pixmap, or an image, there is no relationship between them. Images are in video ram, pixmaps are in main memory.
As to your last question I think you can just load 100 megs worth and the driver will sort out where to put the various texture data. Then if you use certain textures I presume those will be kept in video ram and others will be shuffled off elsewhere. You'd be better off looking at the Opengl/dx documentation/manuals to be sure of how it is going to do it. If you want CONTROL over that, to prioritize certain textures, then you need to get into doing your own dx/gl programming.
I would hazard a guess that if you only have 8 megs video ram, (not forgetting some of that is taken up with your display and the backbuffer), and you only used a small range of textures, they would just stay in video ram and others would be shuffled off to main memory by the driver. You could just test it and see. If it gets horrendous slowdown you know it's using textures that are spooled to memory rather than in video ram.
If you want to you can load into a pixmap yourself and then convert the pixmap into an image - which means, taking the pixmap data and placing a copy of it in video ram as an image, so then you have two copies.
Blitzmax does not manage when the textures are kept in video ram or when they get spooled out to main memory or anything else. That is handled by the OpenGL driver or probably by DirectX also. In OpenGL, which requires the images be in video ram for it to work on them, will probably keep the `most used` or `most recently used` images in video ram and put the rest out to main memory if there is no enough vram to hold them all. Then when you use an image, and it's not in video memory, it will spool it back in from main memory and probably swap something else out. That's all managed by the OpenGL driver, for example, not by blitzmax. In OpenGL you can prioritize certain textures or say that some should remain resident in video memory and not be spooled out, but that's not something that I think blitzmax makes use of it addresses or gives you commands for. You'd have to do your own OpenGl programming. No idea about dx.
There is a `prioritize this and keep it in video ram is possible` thing in OpenGL but I don't think max makes use of it at all. I think it just leaves it up to the driver to determing where it keeps the data that it works on.
In order for OpenGL to work on an image or use it as a texture it HAS to be in video ram, or at least has to have been uploaded as a texture/image and spooled off to memory somehow - but all within OpenGL's realm of control. Max does not manage whether or not to transfer pixmaps to video ram based on ram availability or anything like that. You either have a pixmap, or an image, there is no relationship between them. Images are in video ram, pixmaps are in main memory.
As to your last question I think you can just load 100 megs worth and the driver will sort out where to put the various texture data. Then if you use certain textures I presume those will be kept in video ram and others will be shuffled off elsewhere. You'd be better off looking at the Opengl/dx documentation/manuals to be sure of how it is going to do it. If you want CONTROL over that, to prioritize certain textures, then you need to get into doing your own dx/gl programming.
I would hazard a guess that if you only have 8 megs video ram, (not forgetting some of that is taken up with your display and the backbuffer), and you only used a small range of textures, they would just stay in video ram and others would be shuffled off to main memory by the driver. You could just test it and see. If it gets horrendous slowdown you know it's using textures that are spooled to memory rather than in video ram.