Nuevo para desarrollar en iOS y, en particular, las nuevas características relacionadas con OpenGL en iOS 5, así que me disculpo si alguna de mis preguntas es tan básica.Liberar texturas (objetos GLKTextureInfo) asignados por GLKTextureLoader
La aplicación en la que estoy trabajando está diseñada para recibir marcos de cámara y mostrarlos en pantalla a través de OpenGL ES (la gente de gráficos se hará cargo de esto y agregará el verdadero OpenGL del que sé muy poco). La aplicación está desarrollada XCode4, y el objetivo es iPhone4 con iOS 5. Por el momento, utilicé el ARC y la funcionalidad GLKit y todo funciona bien, excepto por la pérdida de memoria al cargar las imágenes como textura. La aplicación recibe una "advertencia de memoria" muy pronto.
En concreto, me gustaría preguntar cómo liberar las texturas asignados por
@property(retain) GLKTextureInfo *texture;
-(void)setTextureCGImage:(CGImageRef)image
{
NSError *error;
self.texture = [GLKTextureLoader textureWithCGImage:image options:nil error:&error];
if (error)
{
NSLog(@"Error loading texture from image: %@",error);
}
}
El image
es una imagen de cuarzo construido a partir del marco de la cámara (código de ejemplo de manzana). Sé que el problema no está en esa parte del código, ya que si desactivo la asignación, la aplicación no recibe la advertencia.
Hmmm. No hay respuestas hasta ahora, así que esto es tan oficial como me parece en este momento. :-) Mi pensamiento sería que el 'GLKTextureInfo' manejaría esto (es decir, manejando la liberación de las texturas a las que apunta cuando se desasignara) pero aparentemente ese no es el caso. – alokoko
Creo que esta es la forma correcta de hacerlo. El problema es que después de que tu textureInfo se crea cuando unes la textura a GL, GL entonces posee la memoria, por lo tanto, necesitas usar GL para eliminar la memoria –
La explicación de Anthoys tiene sentido para mí. +1. – Soup