0

opengles を使用したフレーム バッファの作成に問題があります。私のアプリケーションでは、メイン フレーム バッファを次のように作成します。

glGenFramebuffers( 1, &viewFramebuffer );
glGenRenderbuffers( 1, &viewRenderbuffer );

glBindFramebuffer( GL_FRAMEBUFFER, viewFramebuffer );
glBindRenderbuffer( GL_RENDERBUFFER, viewRenderbuffer );
[ Context renderbufferStorage : GL_RENDERBUFFER fromDrawable : ( CAEAGLLayer* )self.layer ];
glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, viewRenderbuffer );

glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backingWidth );
glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backingHeight );

if ( itUsesDepthBuffer )
{
    glGenRenderbuffers( 1, &depthRenderbuffer );
    glBindRenderbuffer( GL_RENDERBUFFER, depthRenderbuffer );
    glRenderbufferStorage( GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, backingWidth, backingHeight );
    glFramebufferRenderbuffer( GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer );
}

if ( glCheckFramebufferStatus( GL_FRAMEBUFFER ) != GL_FRAMEBUFFER_COMPLETE )
{
    NSLog( @"failed to make complete framebuffer object %x", glCheckFramebufferStatus( GL_FRAMEBUFFER ) );
    [ self destroyFramebuffer ];

    return NO;
}

しかし、関数 glGetRenderbufferParameteriv は GL_RENDERBUFFER_WIDTH と GL_RENDERBUFFER_HEIGHT のいずれかに対して 0 を返し、最終的に glCheckFramebufferStatus はフレームバッファのアタッチが不完全であるためエラーを返します。

なぜこれが起こっているのか分かりますか?

前もって感謝します。

4

1 に答える 1

0

わかりました、修正しました。バッファ ストレージのレンダリングに失敗していました。

[ Context renderbufferStorage : GL_RENDERBUFFER fromDrawable : ( CAEAGLLayer* )self.layer ];

何らかの理由で、「self.layer」が正しいものを返していませんでした。

于 2013-02-04T14:04:40.560 に答える