差分

ナビゲーションに移動 検索に移動

インデックスバッファ

3,114 バイト追加, 2017年11月6日 (月) 12:47
ページの作成:「'''インデックスバッファ'''(英語:indexed buffer)とは、主に3DCGで使われる用語で、頂点バッファ(頂点データの配列)の...」
'''インデックスバッファ'''([[英語]]:indexed buffer)とは、主に3DCGで使われる用語で、[[頂点バッファ]](頂点データの配列)の無駄をなくすための[[配列]]である。

ポリゴンの世界では四角形は「三角形が2個」で表される。
五角形でも六角形でもそれ以上でも基本は「三角形が◯個」という形式になる。
たとえば四角形があるとすると、それは三角形が2個、全部で6頂点のデータになる。
[[file:vertex.png|none]]
[[MonoGame]]風に書くとこんな感じ。
<source lang="csharp">
var vertices = new VertexPositionColor[6];

vertices[0] = new VertexPositionColor(new Vector3(-10, -10, 0), Color.Green);
vertices[1] = new VertexPositionColor(new Vector3(-10, +10, 0), Color.Green);
vertices[2] = new VertexPositionColor(new Vector3(+10, -10, 0), Color.Green);

vertices[3] = new VertexPositionColor(new Vector3(-10, +10, 0), Color.Red);
vertices[4] = new VertexPositionColor(new Vector3(+10, +10, 0), Color.Red);
vertices[5] = new VertexPositionColor(new Vector3(+10, -10, 0), Color.Red);
</source>

この6頂点のうち、2頂点は重複した値であり、データしては無駄である。
頂点データにはXYZ座標の他にテクスチャ座標や法線なども含まれる。
頂点データ1個1個でいえば今の御時世の[[パソコン]]向けの[[グラフィックボード]]はメモリ容量もメモリ帯域も豊富なので気にするレベルではないが、ポリゴン数が数万、数十万となると結構バカにできない容量になる。とくに[[スマートフォン]]向けに[[ゲーム]]や3Dアプリを[[開発]]する場合には[[パソコン]]ほど豊富な[[リソース]]を積んでいないことも多い。だれもが[[Snapdragon]]の[[ハイエンド]]を使っているわけもなく[[MediaTek]]もあれば[[Krin]]もあり[[OMAP]]もある。

そこで頂点データにインデックスを付けて重複排除したデータとして保持しようというのがインデックスバッファである。
[[ファイル:Indexed.png|none]]

これも[[MonoGame]]風に書くとこんな感じ。
<source lang="csharp">
var vertices = new VertexPositionColor[4];
vertices[0] = new VertexPositionColor(new Vector3(-10, -10, 0), Color.Green);
vertices[1] = new VertexPositionColor(new Vector3(-10, +10, 0), Color.Green);
vertices[2] = new VertexPositionColor(new Vector3(+10, -10, 0), Color.Green);
vertices[3] = new VertexPositionColor(new Vector3(+10, +10, 0), Color.Red);

var indeces = new short[6];
indeces[0] = 0; indeces[1] = 1; indeces[2] = 2; // 三角形1
indeces[3] = 0; indeces[4] = 2; indeces[2] = 3; // 三角形2
</source>
* 頂点バッファは重複排除した4個。
* インデックスバッファは上記の頂点バッファの[[添字]]を指す6個
インデックスバッファが保持しているのは頂点バッファの添字なのせいぜいInt16かInt32くらいの大きさ。これは小さい。

== 関連項目 ==
* [[頂点バッファ]]

[[category: 3DCG]]
匿名利用者

案内メニュー