Win32 API 日本語リファレンス
ホームGraphics.Direct3D.Dxc › IDxcOptimizer

IDxcOptimizer

COM
IID25740e2e-9cba-401b-9119-4fb42f39f270継承元IUnknown自前メソッド開始 vtbl3

メソッド 3

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

vtbl 3 HRESULT GetAvailablePassCount(DWORD* pCount)
pCountDWORD*out利用可能な最適化パスの総数を受け取るDWORDポインタ。
vtbl 4 HRESULT GetAvailablePass(DWORD index, IDxcOptimizerPass** ppResult)
indexDWORDin取得する最適化パスを示すゼロ基点のインデックス。
ppResultIDxcOptimizerPass**out指定インデックスのパスを表すIDxcOptimizerPassを受け取る出力ポインタ。
vtbl 5 HRESULT RunOptimizer(IDxcBlob* pBlob, LPWSTR* ppOptions, DWORD optionCount, IDxcBlob** pOutputModule, IDxcBlobEncoding** ppOutputText)
pBlobIDxcBlob*in最適化対象のLLVMビットコードまたはモジュールを格納した入力Blob。
ppOptionsLPWSTR*in適用する最適化オプション文字列の配列。各要素はワイド文字列。
optionCountDWORDinppOptions配列に含まれるオプションの個数。
pOutputModuleIDxcBlob**out最適化後のモジュールを受け取る出力Blobポインタ。
ppOutputTextIDxcBlobEncoding**outoptional最適化結果のテキスト表現を受け取る出力Blob。不要ならNULL可。

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IDxcOptimizer "{25740E2E-9CBA-401B-9119-4FB42F39F270}"
#usecom global IDxcOptimizer IID_IDxcOptimizer "{}"
#comfunc global IDxcOptimizer_GetAvailablePassCount  3 var
#comfunc global IDxcOptimizer_GetAvailablePass       4 int,sptr
#comfunc global IDxcOptimizer_RunOptimizer           5 sptr,var,int,sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。