2012-06-18 43 views
6

glClear(GL_COLOR_BUFFER_BIT);を呼び出したたびに、OpenGLエラー "invalid framebuffer operation"が発生します。glClear(GL_COLOR_BUFFER_BIT)の後のOpenGL無効なフレームバッファ操作。

呼び出しがうまくいくように見えますが、何も間違っているようです。 ::paintGL()メソッドの最初のことはglClear(GL_COLOR_BUFFER_BIT);です。

Huh?私はちょうどこのエラーを無視する必要がありますか?

+0

透明な色を設定しましたか? – cmannett85

+0

@ cbamber85:いいえ、glClearColor(0,0,0,0)を入れて違いがあるのか​​どうかを確認しました。もう1つはまだそこにあります。 – houbysoft

+0

おそらく、コードがチェックしなかった以前のOpenGL呼び出しによってエラーが発生している可能性があります。すべてのOpenGL操作がエラーチェックによって保護されていることを確認します。 –

答えて

4

あなたのフレームバッファが完全ではなく、不完全なフレームバッファ上でglClearを呼び出すとエラーが発生しています。

glCheckFramebufferStatusを使用してフレームバッファのステータスを確認し、GL_FRAMEBUFFER_COMPLETEを返すことを確認してください。

+0

元のポスターと同じエラーが発生しました。フレームバッファが**完全であることを確認しました。私はiPhone上でOpenGL-ES3を実行していますが、クリアされるテクスチャはsRGBテクスチャです。通常の "rgb"テクスチャに変更すると、glClearの "invalid framebuffer operation"エラーが止まります。 OPによって与えられた情報から、私はこのことが同じであるかどうかはわかりませんが、どちらかの方法でこの問題にぶつかる他の人にヒントを与えるかもしれません。 – kalmiya

+0

更新:私の場合、srgb8は "ColorRenderable"(代替案としてGL_SRGB8_ALPHA8を使用)としてサポートされていません。 Jamesが述べたように、glCheckFrameBufferStatus **はエラーを返すはずですが、私が使用しているOpenGL実装(osxのxcode 7.3ではOpenGL-ES3)にバグがあります。 – kalmiya

2

NSOpenGLViewとCVDisplayLinkを使用してosxでレンダリングコールバックをトリガするこの問題が発生しました。

するNSOpenGLViewのを待つようにしてくださいは、完全に、すなわち、レンダリングを開始する前にを表示:

-(void)viewDidAppear { 
    [super viewDidAppear]; 

    CVDisplayLinkStart(_displayLink); 
} 

のviewDidLoadでそれを行うことは時期尚早です。

関連する問題