ID3DX11FFT
COM公式ドキュメント
順方向および逆方向の FFT をカプセル化します。
メソッド 7
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
順方向変換に使用するスケールを設定します。
| ForwardScale | FLOAT | in | 順方向変換に使用するスケール。ForwardScale に 0 を設定すると、既定値である 1 が使用されます。 |
戻り値
型: HRESULT
Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。
解説(Remarks)
SetForwardScale は、ID3DX11FFT::ForwardTransform が使用するスケールを設定します。
順方向変換のスケールを取得します。
戻り値
型: FLOAT
順方向変換のスケール。
逆方向変換に使用するスケールを設定します。
| InverseScale | FLOAT | in | 逆方向変換に使用するスケール。InverseScale に 0 を設定すると、既定値である 1/N が使用されます。 ここで N は、変換対象の各次元の長さの積です。 |
戻り値
型: HRESULT
Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。
解説(Remarks)
SetInverseScale は、ID3DX11FFT::InverseTransform が使用するスケールを設定します。
逆方向変換のスケールを取得します。
戻り値
型: FLOAT
逆方向変換のスケール。
FFT コンテキストにバッファーをアタッチし、必要な事前計算を実行します。
| NumTempBuffers | DWORD | in | ppTempBuffers に含まれるバッファーの数。 |
| ppTempBuffers | ID3D11UnorderedAccessView** | in | アタッチする一時バッファーの ID3D11UnorderedAccessView ポインターの配列へのポインター。FFT オブジェクトは、そのアルゴリズムでこれらの一時バッファーを使用する場合があります。 |
| NumPrecomputeBuffers | DWORD | in | ppPrecomputeBuffers に含まれるバッファーの数。 |
| ppPrecomputeBufferSizes | ID3D11UnorderedAccessView** | in | アタッチする事前計算バッファーの ID3D11UnorderedAccessView ポインターの配列へのポインター。FFT オブジェクトは、事前計算したデータをこれらのバッファーに格納する場合があります。 |
戻り値
型: HRESULT
Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。
解説(Remarks)
D3DX11_FFT_BUFFER_INFO 構造体は、FFT 作成関数のいずれか (たとえば D3DX11CreateFFT) の呼び出しによって初期化されます。その他の FFT 作成関数については、D3DCSX 11 関数を参照してください。
D3DX11_FFT_BUFFER_INFO の情報を使用して、指定されたサイズ (またはそれ以上) の raw バッファーを割り当て、AttachBuffersAndPrecompute を呼び出してそれらのバッファーを FFT オブジェクトに登録します。
一時バッファーは複数のデバイスコンテキスト間で共有できますが、 一時バッファーを共有する複数の FFT オブジェクトを同時に実行しないことをお勧めします。
一部の FFT アルゴリズムは、sin と cos を事前計算することで効率が向上します。FFT オブジェクトは、事前計算したデータをユーザーが指定した事前計算バッファーに格納する場合があります。
順方向 FFT を実行します。
| pInputBuffer | ID3D11UnorderedAccessView* | in | 入力バッファーに対する ID3D11UnorderedAccessView へのポインター。 |
| ppOutputBuffer | ID3D11UnorderedAccessView** | inout | ID3D11UnorderedAccessView ポインターへのポインター。*ppOutputBuffer が NULL の場合、計算は一時バッファー間で切り替えながら行われます。 さらに、最後に書き込まれたバッファーが ppOutputBuffer に格納されます。 それ以外の場合、ppOutputBuffer が出力バッファーとして使用されます (余分なコピーが発生する場合があります)。 |
戻り値
型: HRESULT
Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。
解説(Remarks)
ForwardTransform は、ID3DX11FFT::AttachBuffersAndPrecompute を使用してバッファーをコンテキストにアタッチした後に呼び出すことができます。pInputBuffer と *ppOutputBuffer の組み合わせには、一時バッファーの 1 つを指定できます。
複素数データの形式は、成分がインターリーブされたもの (たとえば (Real0, Imag0)、 (Real1, Imag1) ... など) です。データは行優先順で格納されます。
逆方向 FFT を実行します。
| pInputBuffer | ID3D11UnorderedAccessView* | in | 入力バッファーに対する ID3D11UnorderedAccessView へのポインター。 |
| ppOutputBuffer | ID3D11UnorderedAccessView** | inout | ID3D11UnorderedAccessView ポインターへのポインター。*ppOutput が NULL の場合、計算は一時バッファー間で切り替えながら行われます。 さらに、最後に書き込まれたバッファーが ppOutput に格納されます。 それ以外の場合、ppOutput が出力バッファーとして使用されます (余分なコピーが発生する場合があります)。 |
戻り値
型: HRESULT
Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3DX11FFT "{B3F7A938-4C93-4310-A675-B30D6DE50553}"
#usecom global ID3DX11FFT IID_ID3DX11FFT "{}"
#comfunc global ID3DX11FFT_SetForwardScale 3 float
#comfunc global ID3DX11FFT_GetForwardScale 4
#comfunc global ID3DX11FFT_SetInverseScale 5 float
#comfunc global ID3DX11FFT_GetInverseScale 6
#comfunc global ID3DX11FFT_AttachBuffersAndPrecompute 7 int,sptr,int,sptr
#comfunc global ID3DX11FFT_ForwardTransform 8 sptr,sptr
#comfunc global ID3DX11FFT_InverseTransform 9 sptr,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。