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