iphone opengl createFramebuffer проблема - PullRequest
0 голосов
/ 04 июня 2011

Теперь я работаю над OpenGL, чтобы показать представление.Мое намерение состоит в том, чтобы обновить представление OpenGL в режиме реального времени, если я изменю данные вершин, представление также изменилось.Но не повезло, что в Xcode есть ошибка.Он известен как createFramebuffer NG для backingWidth / backingHeight равен 0, когда представление opengl макета во 2-й раз.

1.Я также пытался поместить createFramebuffer в drawview, также NG.2.when glCheckFramebufferStatusOES (GL_FRAMEBUFFER_OES)! = GL_FRAMEBUFFER_COMPLETE_OES, я также снова попытался создать фрейм-буфер, но также NG.

Другой парень также обнаружил это:)

Кто-нибудь еще сталкивался с этой проблемой?Как вы справились с этим?Заранее спасибо!

- (BOOL)createFramebuffer {
    NSLog(@"createFramebuffer");
    //******************************************************
    //Create the framebuffer and renderbuffer object
    //******************************************************
    glGenFramebuffersOES(1, &viewFramebuffer);
    glGenRenderbuffersOES(1, &viewRenderbuffer);
    //*******************************************************************
    //Bind the framebuffer and renderbuffer object to the pipeline
    //*******************************************************************
    glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
    glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
    //******************************************************
    //Allocate storage
    //******************************************************
    [context renderbufferStorage:GL_RENDERBUFFER_OES fromDrawable:(CAEAGLLayer*)self.layer];
    //******************************************************
    //Attach renderbuffer object to framebuffer object
    //******************************************************
    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);

    NSLog(@" backing size = (%d, %d)", backingWidth, backingHeight);

    if (USE_DEPTH_BUFFER) {
        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;
}

1 Ответ

0 голосов
/ 06 июня 2011

Я получил обходной путь, но стоил больше памяти, снова запускаю представление opengl при изменении данных вершинУ кого-нибудь еще есть хороший подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...