When i''m loading textures, i''m processing next speps:
1. Load file tga, bmp, pcx,...
2. glBindTexture( ..., tID );
3. some functions with glTexParameteri(.... );
now, after this code where will be my texture, in video card memory ?? i''m right ? or ?
How to delete texture from memory ??
and how i can know about free memory in my videocard ?
thank you !
Yes, your texture is in the cards memory and you can safely return the memory for the image. I do not know of any method to find out how much memory that is left on the card. You can use something like this from the red book
Example 9-2 : Querying Texture Resources with a Texture Proxy GLint format; glTexImage2D(GL_PROXY_TEXTURE_2D, 0, GL_RGBA8, 64, 64, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); glGetTexLevelParameteriv(GL_PROXY_TEXTURE_2D, 0, GL_TEXTURE_INTERNAL_FORMAT, &format);
but "Note: There is one major limitation about texture proxies: The texture proxy tells you if there is space for your texture, but only if all texture resources are available (in other words, if it''s the only texture in town). If other textures are using resources, then the texture proxy query may respond affirmatively, but there may not be enough space to make your texture resident (that is, part of a possibly high-performance working set of textures). (See "Texture Objects" for more information about managing resident textures.)"
Anyway, the question is difficult since other (slower) memory is used if not all the textures can be on the card. Making assumptions about how the performance will be affected is certainly not easy. Particulary if your forced to guess about systems you do not have access to or perhaps has not even been built yet.
The only reasonable solution is to making the texture detail and other stuff something that the user can set. This is not difficult to implement and your application will be easier to debug. Remember that drivers are far from perfect.