1

私はJOGLを使用して、単純なOpenGL3Dグラフィックエンジンを開発しています。今、私はシーンをFBOにレンダリングする単純なレンダリングパイプラインを実装しました。これは、FBOのカラーテクスチャを画面にレンダリングするシェーダーに渡され、オプションでブラーなどの後処理効果を適用します。

FBOを使用せずに、JOGLで見栄えの良いマルチサンプリングを有効にするのは非常に簡単です。たとえば、Swing内でGLパネルをホストしてGLJPanelいるので、マルチサンプリングを有効にするために、を使用してそのように作成しています。

GLCapabilities caps = new GLCapabilities(null);
caps.setSampleBuffers(true);
caps.setNumSamples(8);
GLJPanel gljp = new GLJPanel(caps);

これは非常に簡単で、見栄えの良い結果につながります。ただし、ジオメトリを最初にFBOに描画する必要がある場合、これはあまり役に立ちません。これを行う最良の方法は、GL_TEXTURE_2D_MULTISAMPLEをFBOにアタッチし、シーンをレンダリングしてから、2番目のパスのフラグメントシェーダーでマルチサンプリングを実行することです。

JOGLはFBOの管理に役立つかなり広範なFBObjectクラスを提供しますが、マルチサンプルテクスチャにレンダリングする方法を見つけることができませんでした(TextureAttachmentTEXTURE_2Dリソースでのみ機能するようにハードコードされたオブジェクトでのみ機能します)。したがって、提供されたFBObjectをスケルトンとして使用することにしましたが、ほとんどの作業はプレーンなgl.gl*呼び出しで行いました。これはハッキーでも何でもないことを私は知っています、そしておそらく「よりクリーンな」解決策はTextureAttachmentマルチサンプルテクスチャ専用のクラスを拡張して作成することでしょう。

私はただ疑問に思っています-何かが足りないのですか、それともJOGLはマルチサンプルテクスチャのFBOを本当にサポートしていませんか?

4

1 に答える 1

1

誰かが同じ答えを探している場合に備えて、私は実際に FBObjects の使用を完全に停止しました。現在gl.gl*、フレームバッファー (新しい遅延レンダラーの GBuffer を含む) を管理するために、単純な古いコマンドを使用しています。

于 2013-06-28T20:36:17.633 に答える