Cargando texturas desde viewDidLoad funciona bien. Pero si intento cargarlos desde la actualización GLKViewController
, aparece un error. Lo hago porque quiero cambiar una nueva textura de fondo sin cambiar la vista.GLKTextureLoader falla al llamar desde la actualización
Esto estaba funcionando antes de la última actualización. Tal vez estaba teniendo suerte con los tiempos. Sospecho que está fallando porque algún hilo está ocupado o algo así?
Aquí está el error completo.
Dominio = Código GLKTextureLoaderErrorDomain = 8 "La operación no se pudo completar. (GLKTextureLoaderErrorDomain error 8.)" UserInfo = {0x10b5b510 GLKTextureLoaderGLErrorKey = 1282, GLKTextureLoaderErrorKey = Error de OpenGL}
Así que la pregunta es, ¿Puedo cargar con seguridad una textura desde la función de actualización GLKViewController
? ¿O necesito volver a pensar mi enfoque y volver a cargar toda la vista o algo así?
Aquí es mi función:
-(void) LoadTexture:(NSString *)texture textureInfo:(GLKTextureInfo**)textureInfo
{
NSString *path = [[NSBundle mainBundle] pathForResource:texture ofType:@"png"];
NSError *error = nil;
(*textureInfo) = [GLKTextureLoader textureWithContentsOfFile:path options:nil error:&error];
NSLog(@"path %@", path);
if(!(*textureInfo))
{
NSLog(@"Failed to load texture %@ %@", texture, error);
}
else
{
NSLog(@"LOADED Texture %@ !!! YAY!!! ", texture);
}
}
Gracias,
David
Tengo el mismo problema aquí. ¿Encontraste una solución? – hanno
No, no he investigado aún. Parece que esta llamada síncrona puede fallar si algún recurso está ocupado. Imagino que la solución es cargar de forma asincrónica utilizando la versión más larga de esta función donde pasa un controlador de finalización. Esta versión diferida significa que obtendrá la textura en un momento posterior, por lo que debe manejarse adecuadamente, pero espero que esta sea la solución. - textureWithContentsOfFile: options: queue: completionHandler: –
Me rendí al final y simplemente uso el viejo y simple glTexImage2D. – hanno