Вопрос

Обновление до IOS SDK 4.2 Я испытываю несколько неправильных веществ в моей заявке (другой спросин здесь). То, что я собираюсь спросить вашу помощь, касающуюся представления OpenGL (подкласс EALLVIEW), который не делает больше 3D-модели, которую я вкладываю.

Представление выделяется, и, по-видимому, распознает жесты, но его содержание не видимый (Я проверил, что это о виду, а не неправильное влияние модели, окраска фона: это не окраснет его glClearColor()).

Когда я дважды нажмите на него, он должен изменить размер (он идет полный экран, до этого это немного UIView), вызывая этот метод:

- (void)animateToGrow{
    DNSLog(@"grow");
    grow = YES;
    oldFrame = self.frame;
    oldCenter = self.center;

    [UIView beginAnimations:@"MoveAndStrech" context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationBeginsFromCurrentState:YES];

    self.frame = CGRectMake(0, 0, WIDTH, HEIGHT); 
    self.center = CGPointMake(CENTER_X, CENTER_Y);
    [UIView commitAnimations];
    [self setupGLPerspectiveNear:0.1 far:1000];
}

и волшебно появляется модель, И даже фон покрасится.

У меня есть метод, который изменяет его, и верните его к предыдущему кадру и центру позиции, и когда он вызывается, становится 'пустой' опять таки.

До любого предложения? (Я могу опубликовать больше кода, если это необходимо)

ОБНОВИТЬЭто происходит на симуляторе (не может тестировать на устройство на данный момент). Если это подтвержденная ошибка, имеет ли кто-нибудь ссылку от Apple Docs?

Обновление 2.Я использую OpenGL ES 1.1, а не 2.0.

Вот что я делаю в eaglview's's layoutSubViews :

- (void)layoutSubviews 
{
    [EAGLContext setCurrentContext:_context];
    [self destroyFramebuffer];
    [self createFramebuffer];
    [self drawView];
}

И это мой createFramebuffer

- (BOOL)createFramebuffer
{
    glGenFramebuffersOES(1, &_viewFramebuffer);
    glGenRenderbuffersOES(1, &_viewRenderbuffer);

    glBindFramebufferOES(GL_FRAMEBUFFER_OES, _viewFramebuffer);
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, _viewRenderbuffer);
    [_context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
    glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_COLOR_ATTACHMENT0_OES, GL_RENDERBUFFER_OES, _viewRenderbuffer);

    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &_backingWidth);
    glGetRenderbufferParameterivOES(GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &_backingHeight);

    if (_useDepthBuffer) 
    {
        glGenRenderbuffersOES(1, &_depthRenderbuffer);
        glBindRenderbufferOES(GL_RENDERBUFFER_OES, _depthRenderbuffer);
        glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, _backingWidth, _backingHeight);
        glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, _depthRenderbuffer);
    }

    if(glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES) != GL_FRAMEBUFFER_COMPLETE_OES) 
    {
        NSLog(@"failed to make complete framebuffer object %x", glCheckFramebufferStatusOES(GL_FRAMEBUFFER_OES));
        return NO;
    }

    return YES;
}

Обновление 3.

Если я создаю вид, что дает ему полноэкранную рамку (320x480), оно появляется правильно. Каким-то образом это связано с измерениями зрения

Это было полезно?

Решение

Мне потребовалось навсегда, чтобы найти это. Не хорошо документировано вообще, но это в Apple Docs. На ОС 4.2 и выше, вам нужен размер EagleView, чтобы быть несколькими 32 пикселями в обоих габаритах для его работы.

Другие советы

Это в симуляторе? Если это так, то это известная ошибка в симуляторе iOS 4.2. Эта ошибка не влияет на сами устройства.

Как вы устанавливаете свой слой хостинга OpenGL и представление о том, что он поддерживает? Когда я пробую пример приложений OpenGL ES, которые у меня есть здесь а также здесь, оба пробегаются просто на симуляторе 4.2, а также устройство.

Возможно, вы можете сравнить инициализацию, используемую в тех примерах своими собственными и посмотреть, есть ли что-то, что вам может отсутствовать в процессе установки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top