5

OpenGL ES.2.0 を搭載した iPhone 3G ではなく、iPhone 3G (OpenGL ES1.1) でアンチエイリアシングが必要です。私は 3 d モデルを描画し、次を持っています: モデルの端にあるピクセルが歯のように見えます。

テクスチャ用のフィルタを設定してみましたが、このフィルタは内部のテクスチャのみをより良く見せます。

どうすれば良いアンチエイリアスを作成できますか? 三角形を描くために滑らかなものを使用する必要がありますか? はいの場合、OpenGL ES1.1 でどのように可能ですか?

ありがとう。

4

4 に答える 4

8

iOS 4.0 の時点で、フルスクリーン アンチエイリアシングは、OpenGL への Apple 拡張機能を介して直接サポートされています。基本的な概念は、epatel の提案に似ています。シーンをより大きなフレーム バッファーにレンダリングし、それを画面サイズのフレーム バッファーにコピーしてから、そのバッファーを画面にコピーします。違いは、テクスチャを作成してクワッドにレンダリングする代わりに、コピー/サンプル操作が単一の関数呼び出し (具体的にはglResolveMultisampleFramebufferAPPLE()) によって実行されることです。

バッファの設定方法と描画コードの変更方法の詳細については、OpenGL ES 1.1 用に書かれた Gando Games ブログのチュートリアルを参照してください。Apple の Developer Forums にも、同じことを説明するメモがあります。

別の SO question でこれを指摘してくれた Bersaelor に感謝します。

于 2010-11-04T23:40:04.257 に答える
4

より大きな FBO にレンダリングし、それを正方形のテクスチャとして使用できます。

説明については、この記事をご覧ください。

于 2010-02-11T15:51:18.887 に答える
2

これを達成する別の方法を見つけました。テクスチャを編集して、たとえば透明ピクセルの 2 ピクセル フレームを追加すると、必要に応じてテクスチャ内のカラー ピクセルが透明ピクセルとブレンドされ、基本的なアンチエイリアシング効果が得られます。記事全文はこちらのブログで読むことができます。

このアプローチの利点は、より大きなイメージをレンダリングしたり、バッファーをコピーしたり、さらに悪いことにバッファーからテクスチャを作成したりしないため、パフォーマンスに影響がないことです。

于 2011-03-12T01:02:47.607 に答える
2

glEnable(GL_MULTISAMPLE)だけでなく、eglChooseConfig()の EGL_SAMPLE_BUFFERS および EGL_SAMPLES パラメータも確認してください。

編集: うーん、少なくとも標準化されたアプローチに関する限り、どうやらあなたは運が悪いようです。そのスレッドで述べたように、大きなオフスクリーン テクスチャにレンダリングし、小さなオンスクリーン クワッドにスケーリングしたり、ビュー マトリックスを数回ジッターしたりできます。

于 2010-02-10T14:22:52.030 に答える