1

オブジェクトに 2 パス ブラーを適用していframebufferます。FBOで、ぼかしようとしている画像でシーン全体が覆われていることを確認します。これがプロセスです。

  1. FBOぼかす必要がある画像の寸法を設定しました。
  2. 次の関数を使用して をセットアップしOrthographic Projectionています ( と呼ばれますsetupOrtho(FBO's dimensions) ):

    glViewport(0, 0, w, h) glMatrixMode(GL_PROJECTION) glLoadIdentity() glOrtho(0,1,0,1,-1,1) glMatrixMode(GL_MODELVIEW) glLoadIdentity()

  3. FBOこの射影を使用して に描画します。バインドを解除しますFBO(画面に戻ります)。
  4. Perspective Viewを呼び出し 、上記をsetupPerspective(window's dimensions)に置き換えて に切り替えます。glOrthoglFrustum

シンプルな白いクワッドを描画すると、ビューの切り替えが期待どおりに機能します。1 つの四角形が で描画されOrthographic Projection、もう1 つの四角形が で描画されPerspective Viewます。からレンダリングされたテクスチャを取得しますFBO(id を にしますRENDEREDTEXTURE)。

メイン シーンでをバインドするRENDEREDTEXTUREOrthographic Projection、ぼやけた画像が表示されます。これをメイン シーンの にバインドするとPerspective View、以前に表示されていた白いクワッド ( で描画されたものPerspective View) が消えます。

解決策:回答として投稿。

: テクスチャを使用する場合は、MIPMAP の生成を忘れないでください。

ここで何が問題になる可能性がありますか?

FBOでは、処理したい画像のみが表示され(正射投影を行った)、メインシーンでは、処理された画像が画像ファイルからロードされた他のテクスチャと同じになるような代替手段を提案してください。.

4

1 に答える 1

0

framebufferテクスチャについては、テクスチャに対してMipmaps自動的に生成されません。framebuffer必要なシーンをレンダリングした後、手動でトリガーする必要があります。

デフォルトのフレームバッファに戻した直後に、次のスニペットを使用してください。

    glBindTexture(GL_TEXTURE_2D, YOUR_FINAL_RENDERED_TEXTURE_ID)
    glGenerateMipmap(GL_TEXTURE_2D)
    glBindTexture(GL_TEXTURE_2D, 0)

次にYOUR_FINAL_RENDERED_TEXTURE_ID、通常どおりに使用して、このテクスチャを任意の場所にバインドできます。

于 2014-05-20T12:53:30.223 に答える