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

ID3DX11FFT

COM
IIDb3f7a938-4c93-4310-a675-b30d6de50553継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

順方向および逆方向の FFT をカプセル化します。

メソッド 7

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

vtbl 3 HRESULT SetForwardScale(FLOAT ForwardScale)

順方向変換に使用するスケールを設定します。

ForwardScaleFLOATin順方向変換に使用するスケール。ForwardScale に 0 を設定すると、既定値である 1 が使用されます。

戻り値

型: HRESULT

Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。

解説(Remarks)

SetForwardScale は、ID3DX11FFT::ForwardTransform が使用するスケールを設定します。

vtbl 4 FLOAT GetForwardScale()

順方向変換のスケールを取得します。

戻り値

型: FLOAT

順方向変換のスケール。

vtbl 5 HRESULT SetInverseScale(FLOAT InverseScale)

逆方向変換に使用するスケールを設定します。

InverseScaleFLOATin逆方向変換に使用するスケール。InverseScale に 0 を設定すると、既定値である 1/N が使用されます。 ここで N は、変換対象の各次元の長さの積です。

戻り値

型: HRESULT

Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。

解説(Remarks)

SetInverseScale は、ID3DX11FFT::InverseTransform が使用するスケールを設定します。

vtbl 6 FLOAT GetInverseScale()

逆方向変換のスケールを取得します。

戻り値

型: FLOAT

逆方向変換のスケール。

vtbl 7 HRESULT AttachBuffersAndPrecompute(DWORD NumTempBuffers, ID3D11UnorderedAccessView** ppTempBuffers, DWORD NumPrecomputeBuffers, ID3D11UnorderedAccessView** ppPrecomputeBufferSizes)

FFT コンテキストにバッファーをアタッチし、必要な事前計算を実行します。

NumTempBuffersDWORDinppTempBuffers に含まれるバッファーの数。
ppTempBuffersID3D11UnorderedAccessView**inアタッチする一時バッファーの ID3D11UnorderedAccessView ポインターの配列へのポインター。FFT オブジェクトは、そのアルゴリズムでこれらの一時バッファーを使用する場合があります。
NumPrecomputeBuffersDWORDinppPrecomputeBuffers に含まれるバッファーの数。
ppPrecomputeBufferSizesID3D11UnorderedAccessView**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 オブジェクトは、事前計算したデータをユーザーが指定した事前計算バッファーに格納する場合があります。

vtbl 8 HRESULT ForwardTransform(ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer)

順方向 FFT を実行します。

pInputBufferID3D11UnorderedAccessView*in入力バッファーに対する ID3D11UnorderedAccessView へのポインター。
ppOutputBufferID3D11UnorderedAccessView**inoutID3D11UnorderedAccessView ポインターへのポインター。*ppOutputBufferNULL の場合、計算は一時バッファー間で切り替えながら行われます。 さらに、最後に書き込まれたバッファーが ppOutputBuffer に格納されます。 それ以外の場合、ppOutputBuffer が出力バッファーとして使用されます (余分なコピーが発生する場合があります)。

戻り値

型: HRESULT

Direct3D 11 の戻り値のトピックで説明されている戻り値のいずれかを返します。

解説(Remarks)

ForwardTransform は、ID3DX11FFT::AttachBuffersAndPrecompute を使用してバッファーをコンテキストにアタッチした後に呼び出すことができます。pInputBuffer と *ppOutputBuffer の組み合わせには、一時バッファーの 1 つを指定できます。

複素数データの形式は、成分がインターリーブされたもの (たとえば (Real0, Imag0)、 (Real1, Imag1) ... など) です。データは行優先順で格納されます。

vtbl 9 HRESULT InverseTransform(ID3D11UnorderedAccessView* pInputBuffer, ID3D11UnorderedAccessView** ppOutputBuffer)

逆方向 FFT を実行します。

pInputBufferID3D11UnorderedAccessView*in入力バッファーに対する ID3D11UnorderedAccessView へのポインター。
ppOutputBufferID3D11UnorderedAccessView**inoutID3D11UnorderedAccessView ポインターへのポインター。*ppOutputNULL の場合、計算は一時バッファー間で切り替えながら行われます。 さらに、最後に書き込まれたバッファーが ppOutput に格納されます。 それ以外の場合、ppOutput が出力バッファーとして使用されます (余分なコピーが発生する場合があります)。

戻り値

型: HRESULT

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_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 指定が可能。