Atlantis2の作者さん(metastability)曰く「glBegin/glVertexの代わりにglDrawElementsを使えばもっと速くできるよ」ということだったので、挑戦してみた。
結果、気持ち速くなったような、気がする。
やったこと。
- ShadeからDXFで書き出したものをBlenderで読みこむ。
- Blenderでマテリアルを設定する
- Blenderでobj形式で書き出す
- metastability作のJavaのツールでobj形式からC言語ソースコードに変換
これで法線データとマテリアル付きのglDrawElements版ソースコードになる。
glDrawElementsでは複数の頂点データをまとめて流し込むので、glVertexで頂点を1つずつ設定するのに比べて関数をコールするオーバーヘッドが抑えられる、らしい。
調子に乗って魚を100匹まで増やしてみた。
ニコニコ
YouTube
Atlantis2はBoidというかなりちゃんとした(?)群集シミュレーションアルゴリズムを使っているらしく、数を多くしたらすごい良い感じになりました。
コメントする