SetRenderTargetToShader

描画先を設定する

SetRenderTargetToShader TargetIndex, DrawScreen

int TargetIndex : 描画先を設定する出力番号
int DrawScreen : 描画先グラフィックハンドル

(プラグイン / モジュール : DxLibW)

解説

通常描画先は SetDrawScreen を使用して変更しますが、
グラフィックスデバイスが対応していればピクセルシェーダーは複数の描画先に対して同時に描画を行うことができます。
( ただし出力先を分けるのはピクセルシェーダーなので別画像の同一座標に描画する色を変化させる程度ですが・・・ )

ピクセルシェーダーで出力先を複数にするのは簡単で、普段ピクセルシェーダーの出力の定義は

struct PS_OUTPUT
{
float4 Output             : COLOR0 ;
} ;

このようになっていますが、この Output が単純に増えます。

例えば出力先が3つの場合は。

struct PS_OUTPUT
{
float4 Output0            : COLOR0 ;
float4 Output1            : COLOR1 ;
float4 Output2            : COLOR2 ;
} ;

このようになります。

グラフィックスデバイスが複数の描画先への描画に対応しているかどうか、
また幾つまで対応しているかは GetMultiDrawScreenNum で調べることができます。

描画先として設定する出力番号の0番は SetDrawScreen で設定できる描画先と同じですので、
TargetIndex を 0 にした場合は内部で SetDrawScreen が呼ばれます。

尚、TargetIndex の 1 以上の番号に設定した描画先の設定を無効にしたい場合は、DrawScreen を -1 にして呼び出します。

複数の描画先への描画の主な用途はピクセルシェーダーの出力が単純な色だけではない特殊な用途に使用する場合で、
例えば出力先0番には色を、出力先1番には法線の方向を、出力先2番にはカメラからの距離を出力したい、という場合に使用します。

入力の二つのテクスチャにそれぞれ座標と速度を描画しておいて、
出力先の二つのテクスチャにそれぞれ座標に速度を足したものと減速後の速度を描画する、
そのテクスチャを頂点シェーダーで読み取ってその座標に絵を描画するということをすればピクセルシェーダーを使ってオブジェクトの挙動の処理を行うこともできます。

戻り値:
  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