強火で進め

このブログではプログラム関連の記事を中心に書いてます。

自前でアンチエイリアシングをしてみた

(2010/07/24 追記)
iPhone 4から搭載されました。

マルチサンプリングアンチエイジ - 強火で進め
http://d.hatena.ne.jp/nakamura001/20100723/1279892827


iPhoneで作った3Dのはちゅねですがジャギーが発生していてイマイチ画質が良くないです。

アンチエイリアシングなどかけたいなぁ。と思って色々と調べたところOpenGLだと色々な手法が有るみたいですけどその一つにマルチサンプリングというものが有る様です。

早速使ってみようと調査を進めたました。

するとこちらのドキュメントにてOpenGL ESはデフォルトで GL_MULTISAMPLE が有効になっているらしいという残念な事が判明してしまいました。

glEnable
http://www.khronos.org/opengles/documentation/opengles1_0/html/glEnable.html

この様な方法で現在の GL_MULTISAMPLE を確認したところ1が返されたので実際に有効になっている様です。

NSLog(@"%d\n", glIsEnabled(GL_MULTISAMPLE));

有効でもこのクオリティだとちょっと不満なので自分でアンチエイリアシングの処理をみました。

元々の描画データを元にアンチエイリアシング処理をしたのが右下のものです。そのまま縮小しただけのものが左下のものです。

確かに綺麗になりました。しかし、予想はしていましたがハードの支援がないので実用に耐えないくらい遅いです(3〜5fpsくらいかな?)。左下の画質で我慢するしかないみたいですね。App Storeでリリースしてるアプリもジャギー出てますしね。

うーん、残念。

(2008/12/19追記)
サンプルコードはこちら