Skip to main content
GameDev.net gamedev.net
🔒 Locked

Texture unloading

Started by ThetaRabbit Mar 8, 2012 at 7:30 AM 9 replies 7.8k views
Original Post
ThetaRabbit
ThetaRabbit
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.
RobinsonUK
RobinsonUK
When you say unload, you mean delete the texture?



glDeleteTextures(1, &tex_2d);


The above will delete the texture.
ThetaRabbit
ThetaRabbit
I need to delete texture data from memory. glDeleteTextures can do it?
21st Century Moose
21st Century Moose
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. 
ThetaRabbit
ThetaRabbit
So what, if I want to delete texture from RAM after loading it with SOIL?
21st Century Moose
21st Century Moose
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. 
slicer4ever
slicer4ever
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.
RobinsonUK
RobinsonUK

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.

21st Century Moose
21st Century Moose
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. 
slicer4ever
slicer4ever

[quote name='slicer4ever' timestamp='1331225105' post='4920444']
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.
[/quote]

you are correct sir, i skimmed over the header file, and saw that, and assumed it was what he was looking for in terms of SOIL consistency.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.