Изменение ориентации OpenGL приводит к перезагрузке iPad - PullRequest
3 голосов
/ 23 мая 2011

У меня проблема с openGL и ориентацией в приложении для iPad. Проблема возникает только с устройствами 4.3+. Это не происходит с 4.2 устройствами.

Когда я запускаю приложение с любой ориентацией и рисую, оно рисуется правильно, но когда я меняю ориентацию и пытаюсь нарисовать, iPad перезагружается сам. Перезапуск происходит по вызову

[context presentRenderbuffer:GL_RENDERBUFFER_OES];

Это код, который я использую в layoutSubviews:

-(void) layoutSubviews {
    [EAGLContext setCurrentContext:context];

    glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(id<EAGLDrawable>) [self layer]];

    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backingWidth);
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backingHeight);

    glScissor(0, 0, [self bounds].size.width, [self bounds].size.height);

    NSLog(@"%f -  %f", [self bounds].size.width, [self bounds].size.height);

    glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
    glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backingWidth, backingHeight);

    [self erase];
    [self drawExisting];

    glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
    [context presentRenderbuffer:GL_RENDERBUFFER_OES];
}

У меня вопрос, что-нибудь изменилось на 4.3? Я не могу найти ничего, что утверждает это. Или, если вы видите что-то не так в моем коде, пожалуйста, дайте мне знать.

1 Ответ

0 голосов
/ 25 мая 2011

Я решил эту проблему, уничтожив, а затем создав буфер в layoutSubviews.Это вызвало некоторые новые незначительные проблемы, которые мне удалось исправить.Методы уничтожения и создания находятся здесь: http://box2d.googlecode.com/.../Box2DView.mm

...