Texture unloading

Started by
9 comments, last by slicer4ever 12 years, 1 month ago
Hi all. I use SOIL with OpenGL. This is a sample from of code lonesock.net/soil.html :



GLuint tex_2d = SOIL_load_OGL_texture
(
"img.png",
SOIL_LOAD_AUTO,
SOIL_CREATE_NEW_ID,
SOIL_FLAG_MIPMAPS | SOIL_FLAG_INVERT_Y | SOIL_FLAG_NTSC_SAFE_RGB | SOIL_FLAG_COMPRESS_TO_DXT
);



How can I unload my texture from memory after using this code?

[size=2]sorry for my bad english.
Advertisement
When you say unload, you mean delete the texture?



glDeleteTextures(1, &tex_2d);


The above will delete the texture.
I need to delete texture data from memory. glDeleteTextures can do it?

Yes.

Depends on which memory you want to unload it from. If you want to unload it from video memory then glDeleteTextures is indeed what you want - the texture will be gone (eventually - glDeleteTextures most likely won't remove it immediately and doesn't actually make any promises about the backing memory store (which may e.g. be kept around for potential future reuse) - all it deals with is the texture object name) and you will never be able to use it again in your OpenGL code unless you recreate it.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

So what, if I want to delete texture from RAM after loading it with SOIL?
I'm not familiar with SOIL but I would be amazed if it didn't already do this for you.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

looking at the SOIL source, i believe your looking for:


SOIL_free_image_data


look at the header for more information, and i don't claim to be 100% correct, i've never used soil, but i don't see anything else that seems to indicate deleting behavior.
Check out https://www.facebook.com/LiquidGames for some great games made by me on the Playstation Mobile market.

looking at the SOIL source, i believe your looking for:


SOIL_free_image_data


look at the header for more information, and i don't claim to be 100% correct, i've never used soil, but i don't see anything else that seems to indicate deleting behavior.


I think that's only if you've loaded the file with

SOIL_load_image, because it returns an unsigned char buffer *, not an OpenGL asset ID.

Documented sample code for loading a texture: http://lonesock.net/soil.html and http://libregamewiki...L_Image_Library

SOIL.c, SOIL_load_OGL_texture function, lines 154 and 155: /* and nuke the image data */
SOIL_free_image_data( img );


There is no need to do anything yourself to free the data.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

This topic is closed to new replies.

Advertisement