Calendar8日目の記事です。新しい表現を身に付けるため、vvvvの中でどのようなデータが流れ描画されているのかを理解したい。基本の基本(プリミティブ)に戻り、プリミティブを自力で(※)生成し描画してみる。(※Boxノードとか使わないという意味)DirectX11(に限らず?)では頂点情報を点リスト線リスト隣接付き線リスト線ストリップ隣接付き線ストリップ三角形リスト隣接付き三角形リスト三角形ストリップ隣接付き三角形ストリップなどの形式で扱う。10)今回は線リスト、線ストリップ、三角形リスト、三角形ストリップを自前でジオメトリデータを生成して描画してみる。点については所謂パーティクルでありシンプルなので割愛。線リストジオメトリデータを作成するのにはGeometryBufferノードとInputElementノードを使う。InputElementノードでジオメトリデータのレイアウトを決める。ここでどのようなレイアウトを選ぶかはシェーダーによって変わってくる。今回はシンプルにConstantノードを使った。このシェーダーの中身を見ると頂点シェーダーに渡される構造体は次の様になっている。TEXCOORD0;};頂点座標とテクスチャ座標を渡しているので、InputElementノードでそのように指定する。float4はR32G32B32A32_Floatに該当するのでFormatピンではそれを選択する。(デフォルトで選択されているが。)この辺はvvvvに限った話ではなく、そもそもDirectXの話なのでとても汎用的で大事な知識である。コードを書かなければいけない部分をvvvvがよしなにやってくれているのである。ValidがOnになる。続いて指定したレイアウトに沿うようにジオメトリデータを作成する。(なお、テクスチャ座標は今回使用しないので値は適当。)線リストは2つのジオメトリデータで1組なのでSpreadの値を変えるとこうなる。4組のSpreadsで2本の線が表現できる。線はつながっていない。線ストリップ線リストのパッチのTopologyをLineStripに変えただけ。今まで繋がっていなかった線が繋がっているのがわかる。ジオメトリデータを作るSpreadの数は同じだが、線が1本増えている。このようにストリップ形式の方が頂点データ数を削減できる。三角形リスト線リストと同じ要領でSpreadsの組をもう2組増やす。三角形リストは頂点数が3の倍数でなければならない。ConsのInputCountを一つ減らして5つにしてしまうと、ジオメトリデータが1組分足りないので2つめの三角形は描画されない。三角形ストリップ三角形が繋がっているのがわかる。三角形ストリップは他のレイアウトに比べて人が理解するには少しわかりにくい順番で並んでいくので面白い。次のステップ自らジオメトリデータを作成して図形を描画することが出来た。自由に3D座標空間にグラフィックをジェネレートできるようになるのではなかろうか。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。Blogは、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。SiteOrigin。