シェーダーを使って2Dポリゴンを描画する
DrawPolygon2DToShader param, VertexArray, PolygonNum
VERTEX2DSHADER *Vertex : ポリゴンを構成する頂点配列の先頭アドレス int PolygonNum : 描画するポリゴンの数
(プラグイン / モジュール : DxLibW)
LoadPixelShader で読み込んだピクセルシェーダーを使用して三角形ポリゴンの描画を行います。
Vertex の引数として用意する必要がある VERTEX2DSHADER 構造体の数は描画するポリゴンの数×3になります。
また、この関数を呼び出す前に SetUsePixelShader で使用するピクセルシェーダーを設定しておく必要があります。
( テクスチャを使用する場合は SetUseTextureToShader によるテクスチャの設定も・・・ )
描画に使用する VERTEX2DSHADER 構造体は以下のように定義されています。
struct VERTEX2DSHADER
{
VECTOR pos ; // スクリーン座標
float rhw ; // 同次 W の逆数、通常は 1.0f でOK
COLOR_U8 dif ; // ディフューズカラー
COLOR_U8 spc ; // スペキュラカラー
float u, v ; // テクスチャ座標0
float su, sv ; // テクスチャ座標1
} ;
そして、この関数では頂点処理は行われないので頂点シェーダーが使用されません、
普段頂点シェーダーでピクセルシェーダーの入力データ形式が決定しますが、
この関数を使用した場合のピクセルシェーダーの入力は固定で以下のようになります。
Direct3D 11 の場合
struct PS_INPUT
{
float4 Position : SV_POSITION ; // 座標
float4 DiffuseColor : COLOR0 ; // ディフューズカラー
float4 SpecularColor : COLOR1 ; // スペキュラカラー
float2 TextureCoord0 : TEXCOORD0 ; // テクスチャ座標0
float2 TextureCoord1 : TEXCOORD1 ; // テクスチャ座標1
} ;
Direct3D 9 の場合
struct PS_INPUT
{
float4 DiffuseColor : COLOR0 ; // ディフューズカラー
float4 SpecularColor : COLOR1 ; // スペキュラカラー
float2 TextureCoord0 : TEXCOORD0 ; // テクスチャ座標0
float2 TextureCoord1 : TEXCOORD1 ; // テクスチャ座標1
} ;
2Dのフィルター処理などを行う場合は3Dの処理が必要ないので、頂点シェーダーを書く必要も無くお手軽です。
戻り値:
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 |