DrawPolygon2DToShader

シェーダーを使って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
URLhttps://dxlib.xsrv.jp/
備考hspdxlib.as をインクルードして使用
タイプDxLib ゲームライブラリ
グループDxLib グラフィック描画
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\hspdxlib.hs