シェーダーを使って2Dポリゴンを描画する(インデックスを使用)
DrawPolygonIndexed2DToShader param, VertexArray, VertexNum, param, IndexArray, PolygonNum
VERTEX2DSHADER *Vertex : ポリゴンを構成する頂点配列の先頭アドレス int VertexNum : 頂点の数( Vertex で渡す配列の長さ ) unsigned short *Indices : 頂点番号配列の先頭アドレス int PolygonNum : 描画するポリゴンの数
(プラグイン / モジュール : DxLibW)
DrawPolygon2DToShader と機能は殆ど同じですが、頂点番号配列を使用するところが違います。 例えば LoadPixelShader のサンプルプログラムでは VERTEX2DSHADER 6個の配列を用意していますが、 値を代入しているところを良く見ると配列要素1番と5番、2番と4番が全く同じなのが分かります。 プログラムを実行してみるとわかりますが、これは二つの三角形ポリゴンをぴったりつなぎ合わせて1枚の四角いポリゴンを表現していて、 二つのポリゴン中で接している頂点同士は全く同じ情報を持つからです。 全く同じ情報を持つならその分その情報は余計なものとなります。本来なら4頂点分の情報で済むところが6頂点分の情報を持っているわけですから・・・ そんなときに頂点番号配列を使用します。 頂点番号配列は三角形ポリゴンが Vertex で渡した頂点配列の何番目と何番目と何番目を使って三角形ポリゴンを表現するか、という頂点番号3つの組み合わせがひたすら代入された配列です。 例えば四角を表現する場合は四角の(0)左上の頂点、(1)右上の頂点、(2)左下の頂点、(3)右下の頂点の4頂点を使って、 (0)左上の頂点、(1)右上の頂点、(2)左下の頂点で三角形ポリゴン一つ、 (2)左下の頂点、(1)右上の頂点、(3)右下の頂点で三角形ポリゴンをもう一つ表現すれば 四角を表現することができます。 このように、頂点の配列+3角形を表現するための頂点番号の配列で三角形ポリゴンを描画するのが DrawPolygonIndexed 系の関数です。 例えば上記の場合を具体的にすると、引数 Vertex に渡す頂点の配列は 配列の0番目に四角の左上の頂点の情報 1番目に四角の右上の頂点の情報 2番目に四角の左下の頂点の情報 3番目に四角の右下の頂点の情報を代入しておきます。 そして VertexNum の数は 4 です。 引数 Indices に渡す頂点番号配列は 配列の0番目に0( 左上の頂点が代入されている配列番号 )、 配列の1番目に1( 右上の頂点が代入されている配列番号 )、 配列の2番目に2( 左下の頂点が代入されている配列番号 )、 配列の3番目に2( 左下の頂点が代入されている配列番号 )、 配列の4番目に1( 右上の頂点が代入されている配列番号 )、 配列の5番目に3( 右下の頂点が代入されている配列番号 )を代入しておきます。 そして PolygonNum の数は 2 です。 DrwaPolygon2DToShader の場合は Vertex 配列の要素の数が PolygonNum × 3 である必要がありましたが、 DrawPolygonIndexed2DToShader では Vertex 配列の代わりに Indices 配列の要素の数が PolygonNum × 3 である必要があります。 四角ポリゴン1枚くらいなら Indexed の関数を使う必要は無いかもしれませんが、重複する頂点の多いポリゴン集合を描画しようとした場合は結構有用です。 戻り値: 0:成功
| プラグイン / モジュール | DxLibW |
| バージョン | 3.24f |
| 作成日 | 2026/04/12 |
| 著作者 | DxLib: Takumi Yamada / HSP binding: IronHSP Project |
| URL | https://dxlib.xsrv.jp/ |
| 備考 | hspdxlib.as をインクルードして使用 |
| タイプ | DxLib ゲームライブラリ |
| グループ | DxLib グラフィック描画 |
| 対応環境 |
|
| hs ファイル | hsphelp\hspdxlib.hs |