Похоже, что недавно мое приложение вылетает из-за того, что метод renderbufferStorage возвращает false. Я не знаю, что происходит, поэтому я добавил тесты раньше, но они никогда не поднимают исключения. Я в основном потоке, текущий контекст кажется, хорошо, в eaglLayer тоже, но в любом случае она падает на renderbufferStorage ..OpenGL ES 2.0 renderbufferStorage crash
EAGLContext* defaultEAGLContext = getDefaultContext();
EAGLContext* currentContext = [EAGLContext currentContext];
if(![NSThread isMainThread]) {
NSLog(@"ERROR : renderbufferStorage not called on main thread");
@throw [NSException exceptionWithName:@"ERROR"
reason:@"renderbufferStorage not called on main thread"
userInfo:nil];
}
if(!currentContext) {
@throw [NSException exceptionWithName:@"ERROR"
reason:@"Current context is null"
userInfo:nil];
}
if(!defaultEAGLContext) {
@throw [NSException exceptionWithName:@"ERROR"
reason:@"Default context is null"
userInfo:nil];
}
if(defaultEAGLContext != currentContext) {
@throw [NSException exceptionWithName:@"ERROR"
reason:@"Default context is different than current context"
userInfo:nil];
}
if(!_eaglLayer) {
@throw [NSException exceptionWithName:@"ERROR"
reason:@"EAGL layer error"
userInfo:nil];
}
if (![defaultEAGLContext renderbufferStorage:GL_RENDERBUFFER fromDrawable:_eaglLayer]) {
NSLog(@"ERROR : Failed to obtain renderbuffer storage from layer");
@throw [NSException exceptionWithName:@"ERROR"
reason:@"Failed to obtain renderbuffer storage from layer"
userInfo:nil];
}
вы знаете, почему этот метод будет возвращать ложные ли, даже случайно? Заранее спасибо
Благодарим вас за ответ. У меня уже есть эта часть кода, хотя :(Ну, метод просто возвращает false, к сожалению, нет журнала. Он падает после того, если буфер визуализации не установлен, поэтому я делаю исключение раньше, чтобы отбросить его с помощью crashlytics. Плохая идея? EDIT: также он случайно падает, некоторые пользователи его получили, но я никогда не повторяю его :( – Xys
Я вижу. Поэтому метод не сбой, а возвращает false ... Является ли ваш буфер визуализации привязанным в то время? –
Да , после создания контекста (и установить его тока), я связываю буфер, как это: glGenRenderbuffers (1, & _colorRenderBuffer); glBindRenderbuffer (GL_RENDERBUFFER, _colorRenderBuffer); – Xys