Win32 API 日本語リファレンス
ホームGraphics.Direct3D11 › ID3D11FunctionLinkingGraph

ID3D11FunctionLinkingGraph

COM
IID54133220-1ce8-43d3-8236-9855c5ceecff継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

function-linking-graph インターフェイスは、互いに値を受け渡すプリコンパイル済み関数呼び出しの並びから成るシェーダーを構築するために使用します。

解説(Remarks)

function-linking-graph インターフェイスを取得するには、D3DCreateFunctionLinkingGraph を呼び出します。

function-linking-graph (FLG) インターフェイスのメソッドを使用すると、互いに値を受け渡すプリコンパイル済み関数呼び出しの並びから成るシェーダーを構築できます。HLSL を記述して HLSL コンパイラーを呼び出す必要はありません。代わりに、シェーダーの構造を C++ API によってプログラム的に指定します。FLG のノードは、入力シグネチャおよび出力シグネチャと、プリコンパイル済みライブラリー関数の呼び出しを表します。関数呼び出しノードを登録した順序が、呼び出しの並びを定義します。入力シグネチャのノードを最初に、出力シグネチャのノードを最後に指定する必要があります。FLG のエッジは、あるノードから別のノードへ値をどのように渡すかを定義します。渡される値のデータ型は同一である必要があり、暗黙の型変換は行われません。形状 (shape) とスウィズルの規則は HLSL の動作に従います。値はこの並びの中で前方にのみ渡すことができます。

メモ ID3D11FunctionLinkingGraph には D3dcompiler_47.dll 以降のバージョンの DLL が必要です。

メソッド 8

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT CreateModuleInstance(ID3D11ModuleInstance** ppModuleInstance, ID3DBlob** ppErrorBuffer)

function-linking-graph オブジェクトからシェーダーモジュールを初期化します。

ppModuleInstanceID3D11ModuleInstance**out初期化するシェーダーモジュールの ID3D11ModuleInstance インターフェイスへのポインターのアドレスです。
ppErrorBufferID3DBlob**outoptionalコンパイラーのエラーメッセージにアクセスするために使用できる ID3DBlob インターフェイスへのポインターを受け取る変数への省略可能なポインターです。エラーがない場合は NULL になります。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 4 HRESULT SetInputSignature(D3D11_PARAMETER_DESC* pInputParameters, DWORD cInputParameters, ID3D11LinkingNode** ppInputNode)

function-linking-graph の入力シグネチャを設定します。

pInputParametersD3D11_PARAMETER_DESC*in入力シグネチャのパラメーターを表す D3D11_PARAMETER_DESC 構造体の配列です。
cInputParametersDWORDinpInputParameters 配列に含まれる入力パラメーターの数です。
ppInputNodeID3D11LinkingNode**outfunction-linking-graph の入力シグネチャを表す ID3D11LinkingNode インターフェイスへのポインターを受け取る変数へのポインターです。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 5 HRESULT SetOutputSignature(D3D11_PARAMETER_DESC* pOutputParameters, DWORD cOutputParameters, ID3D11LinkingNode** ppOutputNode)

function-linking-graph の出力シグネチャを設定します。

pOutputParametersD3D11_PARAMETER_DESC*in出力シグネチャのパラメーターを表す D3D11_PARAMETER_DESC 構造体の配列です。
cOutputParametersDWORDinpOutputParameters 配列に含まれる出力パラメーターの数です。
ppOutputNodeID3D11LinkingNode**outfunction-linking-graph の出力シグネチャを表す ID3D11LinkingNode インターフェイスへのポインターを受け取る変数へのポインターです。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 6 HRESULT CallFunction(LPSTR pModuleInstanceNamespace, ID3D11Module* pModuleWithFunctionPrototype, LPSTR pFunctionName, ID3D11LinkingNode** ppCallNode)

function-linking-graph で使用する関数呼び出しリンクノードを作成します。

pModuleInstanceNamespaceLPSTRinoptional関数の名前空間 (省略可能) です。名前空間が不要な場合は NULL を指定します。
pModuleWithFunctionPrototypeID3D11Module*in関数プロトタイプを含むライブラリーモジュールの ID3D11ModuleInstance インターフェイスへのポインターです。
pFunctionNameLPSTRin関数の名前です。
ppCallNodeID3D11LinkingNode**outfunction-linking-graph 内の関数を表す ID3D11LinkingNode インターフェイスへのポインターを受け取る変数へのポインターです。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 7 HRESULT PassValue(ID3D11LinkingNode* pSrcNode, INT SrcParameterIndex, ID3D11LinkingNode* pDstNode, INT DstParameterIndex)

転送元のリンクノードから転送先のリンクノードへ値を渡します。

pSrcNodeID3D11LinkingNode*in転送元リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。
SrcParameterIndexINTin転送元パラメーターの 0 から始まるインデックスです。
pDstNodeID3D11LinkingNode*in転送先リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。
DstParameterIndexINTin転送先パラメーターの 0 から始まるインデックスです。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 8 HRESULT PassValueWithSwizzle(ID3D11LinkingNode* pSrcNode, INT SrcParameterIndex, LPSTR pSrcSwizzle, ID3D11LinkingNode* pDstNode, INT DstParameterIndex, LPSTR pDstSwizzle)

転送元のリンクノードから転送先のリンクノードへ、スウィズルを適用して値を渡します。

pSrcNodeID3D11LinkingNode*in転送元リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。
SrcParameterIndexINTin転送元パラメーターの 0 から始まるインデックスです。
pSrcSwizzleLPSTRin転送元のスウィズルの名前です。
pDstNodeID3D11LinkingNode*in転送先リンクノードの ID3D11LinkingNode インターフェイスへのポインターです。
DstParameterIndexINTin転送先パラメーターの 0 から始まるインデックスです。
pDstSwizzleLPSTRin転送先のスウィズルの名前です。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 9 HRESULT GetLastError(ID3DBlob** ppErrorBuffer)

function-linking-graph の直前の関数呼び出しで発生したエラーを取得します。

ppErrorBufferID3DBlob**outoptionalエラーにアクセスするために使用できる ID3DBlob インターフェイスへのポインターを受け取る変数へのポインターです。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

vtbl 10 HRESULT GenerateHlsl(DWORD uFlags, ID3DBlob** ppBuffer)

function-linking-graph を表す Microsoft High Level Shader Language (HLSL) のシェーダーコードを生成します。

uFlagsDWORDin予約済みです。
ppBufferID3DBlob**outfunction-linking-graph を表す HLSL シェーダーのソースコードにアクセスするために使用できる ID3DBlob インターフェイスへのポインターを受け取る変数へのポインターです。この HLSL コードはコンパイルできますが、その前に function-linking-graph で呼び出される関数のコードまたは include 文を追加する必要があります。

戻り値

型: HRESULT

成功した場合は S_OK を返します。それ以外の場合は、Direct3D 11 リターンコードのいずれかを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 指定が可能。