HASTCounter:6323Today:1Yesterday:3Online:6Tweet頂点の取り扱い-3「TriangleStrip」About前回は頂点情報とIndexを定義して複数の三角形ポリゴンの描画(例として四角形の表現)を行った。例によってここで紹介する内容は今回は前回の内容を引き継いでいるので、必要に応じて参照されたい。ここでは複数の連続する三角形ポリゴンの描画について、前回とは異なる手法を取り扱う。頂点を共有する三角形の描画に関してはIndexを利用しない手法があって、ここではそれを解説する。動作を確認しています。頂点については前回と同様に、四角形を2つの三角形で表現するための4つの頂点を定義する。勘の良い人やDirectXやOpenGLを触ったことがある人は紹介するまでもない内容で、先の内容(1回目)で紹介した「PrimitiveType」を「TriangleList」から「TriangleStrip」に変更するだけで、Indexを指定しなくても複数の三角形を描画することができるようになる。(PrimitiveType.TriangleStrip,vertices,0,2);ただし頂点を宣言する順番などに注意する必要がある。三角形を構成する頂点の内、最後の2つと、次に宣言する1つの頂点とで3角形が構成される、その繰り返しになっている。見た目は前回の実行時とまったく同じものになる。Indexを定義しない分、楽だし、なにより複雑に頂点の順序を考えることなどしなくて良い。なんで早くこっちの手法を解説しなかったのか、という話になるが、それは次の項目で解説する。2つの手法の違い今回紹介した方法を使った方が、複数の面を表示するには効率的に見える。実際そうだし、実用的なのも今回の手法であると思う。2つの描画方法には次の様なことが考えられる。図の左側に示した様な、ある1点を共有する様なポリゴンの描画はTriangleStripでは不可能である。いった図形が果たしてどれ程登場するかは不明で、必要性は少ないと思われるが確かに不可能である。細かい所までプログラミングをすることになると、3DCGソフトから出力されたキャラクタなどのモデルデータを特殊な方法でゲーム内に読み込んだり、その頂点を操作するプログラムが必要になってくる。実際のモデルデータはIndexを利用するようなデータ構造である場合が多く、そういったプログラムを実装する場合には先に紹介した手法が利用される。実装の都合上、TriangleListの方が、先に実装されることは明白である。完全に余談になるが、まず3つの頂点から三角形を描画するプログラムを実装し、次いで連続する三角形を描画するプログラムを実装するのは、少しでもプログラムを書いたことがある人にとっては明白で、こういった理由もあってTriangleListとTriangleStripとが存在することも十分考えられる。著作権Administrator。