インデックスバッファはなぜあるのか
インデックスバッファはなぜあるのか
WebGL を使う場合にただの三角形ポリゴン一枚をレンダリングする機会はそんなに多くはないでしょう。
せめて、四角形ポリゴンを使うことになるでしょうし、
そもそも目指すのはもっと複雑なモデル
モデルが複雑化すると、それに伴って頂点の数もどんどん増えます。
精密で滑らかなモデルを描画しようと思えば思うほどに、必要な頂点データの量も肥大化していきます。
できる限りデータの量を減らしたいと考えるのがプログラマの性です。
省略の方法
三角形を2つ描画するのに、6つの頂点がいる
でも、四角形だったら?
https://gyazo.com/c25da68e447b1e7258bcd9ad62132058
三角形が2枚であることには変わりないが、頂点数は6つもいらない
4つでいい
もしこれを従来の三角形ポリゴン2枚描画をする命令で、頂点数を6つ渡したらメモリの無駄
4頂点だけを渡して、省略しつつ三角形二枚を(渡した4頂点を再利用しつつ)描画する
それをするために必要なのがIBO
https://gyazo.com/d535097b79ff080d0d4797d1cde2aca5
頂点の配列を考える
4点が与えられているとする
上のような図の関係のとき、
1,2,3
2,3,4
番目の頂点を使って三角形ポリゴンを表示したい
このように、vboのインデックスを指定するものがIBO
重複する頂点を再利用する
どの頂点を使えばいいのか WebGL に教えてくれるのがインデックスバッファです。
今回のように単なる四角形一枚であればその効果はたいしたことはありませんが、
巨大で複雑なモデルになればなるほど、インデックスバッファによる省リソースの恩恵は大きなものになります。
データの節約、速度の向上