ID3D11FunctionLinkingGraph
COM公式ドキュメント
function-linking-graph インターフェイスは、互いに値を受け渡すプリコンパイル済み関数呼び出しの並びから成るシェーダーを構築するために使用します。
解説(Remarks)
function-linking-graph インターフェイスを取得するには、D3DCreateFunctionLinkingGraph を呼び出します。
function-linking-graph (FLG) インターフェイスのメソッドを使用すると、互いに値を受け渡すプリコンパイル済み関数呼び出しの並びから成るシェーダーを構築できます。HLSL を記述して HLSL コンパイラーを呼び出す必要はありません。代わりに、シェーダーの構造を C++ API によってプログラム的に指定します。FLG のノードは、入力シグネチャおよび出力シグネチャと、プリコンパイル済みライブラリー関数の呼び出しを表します。関数呼び出しノードを登録した順序が、呼び出しの並びを定義します。入力シグネチャのノードを最初に、出力シグネチャのノードを最後に指定する必要があります。FLG のエッジは、あるノードから別のノードへ値をどのように渡すかを定義します。渡される値のデータ型は同一である必要があり、暗黙の型変換は行われません。形状 (shape) とスウィズルの規則は HLSL の動作に従います。値はこの並びの中で前方にのみ渡すことができます。
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
function-linking-graph オブジェクトからシェーダーモジュールを初期化します。
| ppModuleInstance | ID3D11ModuleInstance** | out | 初期化するシェーダーモジュールの ID3D11ModuleInstance インターフェイスへのポインターのアドレスです。 |
| ppErrorBuffer | ID3DBlob** | outoptional | コンパイラーのエラーメッセージにアクセスするために使用できる ID3DBlob インターフェイスへのポインターを受け取る変数への省略可能なポインターです。エラーがない場合は NULL になります。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
function-linking-graph の入力シグネチャを設定します。
| pInputParameters | D3D11_PARAMETER_DESC* | in | 入力シグネチャのパラメーターを表す D3D11_PARAMETER_DESC 構造体の配列です。 |
| cInputParameters | DWORD | in | pInputParameters 配列に含まれる入力パラメーターの数です。 |
| ppInputNode | ID3D11LinkingNode** | out | function-linking-graph の入力シグネチャを表す ID3D11LinkingNode インターフェイスへのポインターを受け取る変数へのポインターです。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
function-linking-graph の出力シグネチャを設定します。
| pOutputParameters | D3D11_PARAMETER_DESC* | in | 出力シグネチャのパラメーターを表す D3D11_PARAMETER_DESC 構造体の配列です。 |
| cOutputParameters | DWORD | in | pOutputParameters 配列に含まれる出力パラメーターの数です。 |
| ppOutputNode | ID3D11LinkingNode** | out | function-linking-graph の出力シグネチャを表す ID3D11LinkingNode インターフェイスへのポインターを受け取る変数へのポインターです。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
function-linking-graph で使用する関数呼び出しリンクノードを作成します。
| pModuleInstanceNamespace | LPSTR | inoptional | 関数の名前空間 (省略可能) です。名前空間が不要な場合は NULL を指定します。 |
| pModuleWithFunctionPrototype | ID3D11Module* | in | 関数プロトタイプを含むライブラリーモジュールの ID3D11ModuleInstance インターフェイスへのポインターです。 |
| pFunctionName | LPSTR | in | 関数の名前です。 |
| ppCallNode | ID3D11LinkingNode** | out | function-linking-graph 内の関数を表す ID3D11LinkingNode インターフェイスへのポインターを受け取る変数へのポインターです。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
転送元のリンクノードから転送先のリンクノードへ値を渡します。
| pSrcNode | ID3D11LinkingNode* | in | 転送元リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。 |
| SrcParameterIndex | INT | in | 転送元パラメーターの 0 から始まるインデックスです。 |
| pDstNode | ID3D11LinkingNode* | in | 転送先リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。 |
| DstParameterIndex | INT | in | 転送先パラメーターの 0 から始まるインデックスです。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
転送元のリンクノードから転送先のリンクノードへ、スウィズルを適用して値を渡します。
| pSrcNode | ID3D11LinkingNode* | in | 転送元リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。 |
| SrcParameterIndex | INT | in | 転送元パラメーターの 0 から始まるインデックスです。 |
| pSrcSwizzle | LPSTR | in | 転送元のスウィズルの名前です。 |
| pDstNode | ID3D11LinkingNode* | in | 転送先リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。 |
| DstParameterIndex | INT | in | 転送先パラメーターの 0 から始まるインデックスです。 |
| pDstSwizzle | LPSTR | in | 転送先のスウィズルの名前です。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
function-linking-graph の直前の関数呼び出しで発生したエラーを取得します。
| ppErrorBuffer | ID3DBlob** | outoptional | エラーにアクセスするために使用できる ID3DBlob インターフェイスへのポインターを受け取る変数へのポインターです。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
function-linking-graph を表す Microsoft High Level Shader Language (HLSL) のシェーダーコードを生成します。
| uFlags | DWORD | in | 予約済みです。 |
| ppBuffer | ID3DBlob** | out | function-linking-graph を表す HLSL シェーダーのソースコードにアクセスするために使用できる ID3DBlob インターフェイスへのポインターを受け取る変数へのポインターです。この HLSL コードはコンパイルできますが、その前に function-linking-graph で呼び出される関数のコードまたは include 文を追加する必要があります。 |
戻り値
型: HRESULT
成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D11FunctionLinkingGraph "{54133220-1CE8-43D3-8236-9855C5CEECFF}" #usecom global ID3D11FunctionLinkingGraph IID_ID3D11FunctionLinkingGraph "{}" #comfunc global ID3D11FunctionLinkingGraph_CreateModuleInstance 3 sptr,sptr #comfunc global ID3D11FunctionLinkingGraph_SetInputSignature 4 var,int,sptr #comfunc global ID3D11FunctionLinkingGraph_SetOutputSignature 5 var,int,sptr #comfunc global ID3D11FunctionLinkingGraph_CallFunction 6 str,sptr,str,sptr #comfunc global ID3D11FunctionLinkingGraph_PassValue 7 sptr,int,sptr,int #comfunc global ID3D11FunctionLinkingGraph_PassValueWithSwizzle 8 sptr,int,str,sptr,int,str #comfunc global ID3D11FunctionLinkingGraph_GetLastError 9 sptr #comfunc global ID3D11FunctionLinkingGraph_GenerateHlsl 10 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D11FunctionLinkingGraph "{54133220-1CE8-43D3-8236-9855C5CEECFF}" #usecom global ID3D11FunctionLinkingGraph IID_ID3D11FunctionLinkingGraph "{}" #comfunc global ID3D11FunctionLinkingGraph_CreateModuleInstance 3 sptr,sptr #comfunc global ID3D11FunctionLinkingGraph_SetInputSignature 4 sptr,int,sptr #comfunc global ID3D11FunctionLinkingGraph_SetOutputSignature 5 sptr,int,sptr #comfunc global ID3D11FunctionLinkingGraph_CallFunction 6 str,sptr,str,sptr #comfunc global ID3D11FunctionLinkingGraph_PassValue 7 sptr,int,sptr,int #comfunc global ID3D11FunctionLinkingGraph_PassValueWithSwizzle 8 sptr,int,str,sptr,int,str #comfunc global ID3D11FunctionLinkingGraph_GetLastError 9 sptr #comfunc global ID3D11FunctionLinkingGraph_GenerateHlsl 10 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。