Tải họa tiết từ viewDidLoad hoạt động tốt. Nhưng nếu tôi cố tải chúng từ bản cập nhật GLKViewController
tôi gặp lỗi. Tôi làm điều này bởi vì tôi muốn trao đổi trong một kết cấu nền mới mà không thay đổi quan điểm.GLKTextureLoader không thành công khi gọi từ bản cập nhật
Điều này đang hoạt động trước khi nâng cấp lần cuối. Có lẽ tôi đã may mắn với thời gian. Tôi nghi ngờ rằng nó không thành công vì một số chủ đề bận hay gì đó?
Đây là lỗi đầy đủ.
miền = GLKTextureLoaderErrorDomain Mã = 8 "Các hoạt động không thể hoàn tất. (GLKTextureLoaderErrorDomain lỗi 8.)" UserInfo = 0x10b5b510 {GLKTextureLoaderGLErrorKey = 1282, GLKTextureLoaderErrorKey = OpenGL error}
Vì vậy, câu hỏi là, thế nào tôi có thể tải một kết cấu an toàn từ chức năng cập nhật GLKViewController
? Hay tôi cần phải suy nghĩ lại cách tiếp cận của mình và tải lại toàn bộ khung nhìn hay gì đó?
Đây là chức năng của tôi:
-(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);
}
}
Cảm ơn,
David
Tôi gặp vấn đề tương tự ở đây. Bạn đã tìm thấy một giải pháp? – hanno
Tôi chưa điều tra. Dường như cuộc gọi đồng bộ này có thể thất bại nếu một số tài nguyên bận. Tôi tưởng tượng giải pháp là tải là không đồng bộ bằng cách sử dụng phiên bản dài hơn của chức năng này, nơi bạn vượt qua trong một trình xử lý hoàn thành. Phiên bản trì hoãn này có nghĩa là bạn sẽ nhận được kết cấu vào một thời điểm sau đó để cần được xử lý đúng cách, nhưng tôi hy vọng đây sẽ là giải pháp. - textureWithContentsOfFile: options: queue: completionHandler: –
Tôi đã từ bỏ cuối cùng và chỉ sử dụng glTexImage2D cũ đơn giản. – hanno