Hello,
I am having some trouble with using Mascot Capsule and freeing textures.
What I have is a viewer that allows me to load in my models and examine them. You can flip through the different models. Each model uses a unique Figure and a unique texture map (128x128). What I am finding is that after loading a few models, I can no longer allocate any more textures. The code works in the emulator … which I know does not mean it should run on the phone.
I use the same FigureLayout and Effect3D when I draw the figure.
– CODE SAMPLE START –
private Figure curr_figure = null;
private Texture curr_texture = null;
void loadModel(int model)
{
curr_figure = null;
curr_texture = null;
// Allocate figure
try
{
curr_figure = new Figure(figure_list[model]);
curr_texture = new Texture(texture_list[model], true);
if (curr_figure != null)
curr_figure.setTexture(curr_texture);
}
catch (Exception e)
{
}
}
– CODE SAMPLE END –
I ran another test, which just deletes and reloads a texture each frame (from the texture list) to see if there was a problem with just texture loading.
The code snippet is the following:
– CODE SAMPLE START –
test_texture = null;
test_texture = new Texture(texture_list[tid], true);
tid++;
if (tid >= MAX_TEXTURE_IN_LIST)
tid = 0;
– CODE SAMPLE END –
When run, the textures get loaded with no problems. However, if I start to call loadModel (by a key press) then once loadModel starts to fail, I start seeing a null test_texture.
It seems that when you do a curr_figure.setTexture that some reference is being set something occurs that will not allow it to be freed later. If you just do a pure load of a texture and free it this is fine.
It seems that I am probably doing something wrong.
Is there a correct procedure to free Figure and Texture data?
Thanks!
Ben