MPMoviePlayerViewController вылетает ошибка OpenGL 0x0505 в -[ES1Renderer resizeFromLayer:]
У меня возникла проблема, когда при загрузке вступительного фильма при запуске приложения IOS игра вылетает с ошибкой OpenGL 0x0505 в -[ES1Renderer resizeFromLayer:].
Мои характеристики фильма:
Размеры: 480 x 320 Кодеки: H.264, AAC Продолжительность: 00:15 Общая скорость передачи данных: 984 Размер: 1,9 МБ
Я запускаю фильм в applicationDidFinishLaunching и выполняю инициализацию / создание CCDirector и EAGLView в отдельном методе, который вызывается после завершения воспроизведения фильма.
Это работает на симуляторе так же, как на Iphone 4, 3GS, Ipod 4th Gen, но на Ipod 2nd gen (версия 4.1) происходит сбой.
У меня есть свой собственный класс, производный от MPMoviePlayerViewController, и у меня есть собственный метод startMovie, который делает это:
- (void)startMovie
{
MPMoviePlayerController* moviePlayerController = [self moviePlayer];
moviePlayerController.controlStyle = MPMovieControlStyleNone;
moviePlayerController.useApplicationAudioSession = YES;
moviePlayerController.fullscreen = YES;
moviePlayerController.scalingMode = MPMovieScalingModeAspectFill;
// Only play video for iOS above 3.2
if(OS_Version > 3.21)
{
[moviePlayerController setMovieControlMode:MPMovieControlModeHidden];
[moviePlayerController prepareToPlay];
[moviePlayerController play];
}
else
{
// Use the new 3.2 style API
if([moviePlayerController respondsToSelector:@selector(setFullscreen:animated:)])
moviePlayerController.shouldAutoplay = YES;
else // Use the old 2.0 style API
{
moviePlayerController.movieControlMode = MPMovieControlModeHidden;
[moviePlayerController play];
}
}
}
При запуске фильма я делаю так:
self.moviePlayerViewController = [[[PFMPMoviePlayerViewController alloc] initWithContentURL:[NSURL fileURLWithPath:filePath]] autorelease];
[moviePlayerViewController startMovie];
Я полагаю, что у меня заканчивается память, так как ошибка OpenGL 0x0505 является проблемой нехватки памяти, но я не понимаю, почему. Сама игра выделяла более 2 МБ после нажатия кнопки воспроизведения, поэтому я думаю, что она может справиться с распределением фильма.
Что-то явно не так, что я могу сделать, чтобы OpenGL выдавал такую ошибку?
Спасибо,
1 ответ
Вам будет лучше использовать класс CCVideoPlayer из проекта https://github.com/cocos2d/cocos2d-iphone-extensions, а не заново изобретать колесо.