我遇到一个问题,当我在IOS应用程序开始时加载一个介绍影片时,游戏会因OpenGL错误0x0505而崩溃 - [ES1Renderer resizeFromLayer:]。
我的电影规格是:
尺寸:480 x 320 编解码器:H.264,AAC 持续时间:00:15 总比特率:984 大小:1.9 MB
我在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 MB,所以我认为它可以处理电影分配。
我是否有任何明显错误导致OpenGL抛出这样的错误?
谢谢,