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

ID2D1EffectContext

COM
IID3d9f916b-27dc-4ad7-b4f1-64945340f563継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

エフェクトおよびトランスフォームの作成者向けに、ファクトリメソッドやその他の状態管理を提供します。(ID2D1EffectContext)

解説(Remarks)

このインターフェイスは、ID2D1EffectImpl::Initialize メソッドを通じてエフェクトの実装に渡されます。アプリケーションがこのインターフェイスに安易にアクセスするのを防ぎ、パブリックインターフェイスとプライベートインターフェイスの間で参照カウントを分離するため、ID2D1DeviceContextID2D1EffectContext の間で QueryInterface を呼び出すことはできません。

ID2D1Effect::Initialize を呼び出すたびに、異なる ID2D1EffectContext インターフェイスが提供されます。このインターフェイスは、エフェクトのリソース割り当てを追跡します。エフェクトが解放されると、対応する割り当ても解放されます。

メソッド 21

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

vtbl 3 void GetDpi(FLOAT* dpiX, FLOAT* dpiY)

ドット/インチ(dpi)またはピクセルのいずれかで表される可能性のあるプロパティに対して、エフェクトが使用する単位マッピングを取得します。

dpiXFLOAT*outx 軸方向の dpi。
dpiYFLOAT*outy 軸方向の dpi。

解説(Remarks)

D2D1_UNIT_MODED2D1_UNIT_MODE_PIXELS の場合、dpiXdpiY の両方が 96 に設定されます。

vtbl 4 HRESULT CreateEffect(GUID* effectId, ID2D1Effect** effect)

指定したクラス ID に対応する Direct2D エフェクトを作成します。

effectIdGUID*inエフェクトを作成するための、組み込みまたは登録済みのエフェクト ID。エフェクト ID の一覧については、Built-in Effects を参照してください。
effectID2D1Effect**outこのメソッドが返るときに、エフェクトへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効な値がメソッドに渡されました。
D3DERR_OUTOFVIDEOMEMORY この操作を実行するのに十分なディスプレイメモリが Direct3D にありません。
D2DERR_EFFECT_IS_NOT_REGISTERED 指定したエフェクトはシステムに登録されていません。

解説(Remarks)

作成されたエフェクトは、そのエフェクトの作成元となった DLL の参照カウントを行いません。このエフェクトがロードされている間に呼び出し側がエフェクトの登録を解除した場合、その結果としての動作は予測できません。

vtbl 5 HRESULT GetMaximumSupportedFeatureLevel(D3D_FEATURE_LEVEL* featureLevels, DWORD featureLevelsCount, D3D_FEATURE_LEVEL* maximumSupportedFeatureLevel)

指定した一覧の中で、デバイスがサポートする最大の機能レベルを示します。

featureLevelsD3D_FEATURE_LEVEL*inアプリケーションが指定する機能レベル。
featureLevelsCountDWORDinアプリケーションが指定する機能レベルの数。
maximumSupportedFeatureLevelD3D_FEATURE_LEVEL*outfeatureLevels の一覧の中で、D2D デバイスがサポートする最大の機能レベル。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
D2DERR_INSUFFICIENT_DEVICE_CAPABILITIES 指定したレベルはいずれもサポートされていません。
vtbl 6 HRESULT CreateTransformNodeFromEffect(ID2D1Effect* effect, ID2D1TransformNode** transformNode)

エフェクトグラフを単一のトランスフォームノードにラップし、トランスフォームグラフに挿入します。これにより、あるエフェクトが他のエフェクトを集約できるようになります。

effectID2D1Effect*inトランスフォームノードにラップするエフェクト。
transformNodeID2D1TransformNode**outエフェクトグラフをカプセル化する、返されるトランスフォームノード。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
vtbl 7 HRESULT CreateBlendTransform(DWORD numInputs, D2D1_BLEND_DESCRIPTION* blendDescription, ID2D1BlendTransform** transform)

トランスフォームグラフに挿入できるブレンドトランスフォームを作成します。

numInputsDWORDinブレンドトランスフォームへの入力の数。
blendDescriptionD2D1_BLEND_DESCRIPTION*in作成するブレンドトランスフォームを記述します。
transformID2D1BlendTransform**out返されるブレンドトランスフォーム。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
vtbl 8 HRESULT CreateBorderTransform(D2D1_EXTEND_MODE extendModeX, D2D1_EXTEND_MODE extendModeY, ID2D1BorderTransform** transform)

渡された拡張モードに基づいて、入力をあらゆる方向に無限に拡張するトランスフォームを作成します。

extendModeXD2D1_EXTEND_MODEinX 軸方向の拡張モード。
extendModeYD2D1_EXTEND_MODEinY 軸方向の拡張モード。
transformID2D1BorderTransform**out返されるトランスフォーム。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
vtbl 9 HRESULT CreateOffsetTransform(POINT offset, ID2D1OffsetTransform** transform)

オフセットトランスフォームを作成して返します。

offsetPOINTinオフセット量。
transformID2D1OffsetTransform**outこのメソッドが返るときに、オフセットトランスフォームオブジェクトへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。

解説(Remarks)

オフセットトランスフォームは、レンダリングパスを挿入することなく入力ビットマップをオフセットするために使用します。トランスフォームがピクセルに整列したトランスフォームとして評価される場合、オフセットトランスフォームはアフィントランスフォームによって自動的に挿入されます。

vtbl 10 HRESULT CreateBoundsAdjustmentTransform(RECT* outputRectangle, ID2D1BoundsAdjustmentTransform** transform)

境界調整トランスフォームを作成して返します。

outputRectangleRECT*in境界調整トランスフォームの初期出力矩形。
transformID2D1BoundsAdjustmentTransform**out返される境界調整トランスフォーム。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。

解説(Remarks)

サポートトランスフォームは、次の 2 つの異なる目的で使用できます。

vtbl 11 HRESULT LoadPixelShader(GUID* shaderId, BYTE* shaderBuffer, DWORD shaderBufferCount)

指定したシェーダーを、その一意の ID を使ってロードします。(ID2D1EffectContext.LoadPixelShader)

shaderIdGUID*inシェーダーを識別する一意の ID。
shaderBufferBYTE*in登録するシェーダーを格納するバッファー。
shaderBufferCountDWORDinシェーダーバッファーのサイズ(バイト単位)。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。

解説(Remarks)

指定するシェーダーはコンパイル済みである必要があり、生の HLSL コードであってはなりません。

vtbl 12 HRESULT LoadVertexShader(GUID* resourceId, BYTE* shaderBuffer, DWORD shaderBufferCount)

指定したシェーダーを、その一意の ID を使ってロードします。(ID2D1EffectContext.LoadVertexShader)

resourceIdGUID*inシェーダーを識別する一意の ID。
shaderBufferBYTE*in登録するシェーダーを格納するバッファー。
shaderBufferCountDWORDinシェーダーバッファーのサイズ(バイト単位)。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。

解説(Remarks)

指定するシェーダーはコンパイル済みである必要があり、生の HLSL コードであってはなりません。

vtbl 13 HRESULT LoadComputeShader(GUID* resourceId, BYTE* shaderBuffer, DWORD shaderBufferCount)

指定したシェーダーを、その一意の ID を使ってロードします。(ID2D1EffectContext.LoadComputeShader)

resourceIdGUID*inシェーダーを識別する一意の ID。
shaderBufferBYTE*in登録するシェーダーを格納するバッファー。
shaderBufferCountDWORDinシェーダーバッファーのサイズ(バイト単位)。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。

解説(Remarks)

指定するシェーダーはコンパイル済みである必要があり、生の HLSL コードであってはなりません。

vtbl 14 BOOL IsShaderLoaded(GUID* shaderId)

指定したシェーダーがロードされているかどうかをテストします。

shaderIdGUID*inシェーダーを識別する一意の ID。

戻り値

型: BOOL

シェーダーがロードされているかどうか。

vtbl 15 HRESULT CreateResourceTexture(GUID* resourceId, D2D1_RESOURCE_TEXTURE_PROPERTIES* resourceTextureProperties, BYTE* data, DWORD* strides, DWORD dataSize, ID2D1ResourceTexture** resourceTexture)

リソース ID が指定されているかどうかに応じて、指定したリソーステクスチャを作成または検索します。

resourceIdGUID*inoptionalルックアップテーブルを識別する一意の ID への、省略可能なポインター。
resourceTexturePropertiesD2D1_RESOURCE_TEXTURE_PROPERTIES*inリソーステクスチャの作成に使用するプロパティ。
dataBYTE*inoptionalリソーステクスチャにロードする省略可能なデータ。
stridesDWORD*inoptional次元に応じてリソーステクスチャ内を進むためのストライドへの、省略可能なポインター。
dataSizeDWORDinデータのサイズ(バイト単位)。
resourceTextureID2D1ResourceTexture**outDirect2D エフェクトでリソースとして使用できる、返されるテクスチャ。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
vtbl 16 HRESULT FindResourceTexture(GUID* resourceId, ID2D1ResourceTexture** resourceTexture)

指定したリソーステクスチャが、同じ GUID を使って ID2D1EffectContext::CreateResourceTexture で既に作成されている場合に、それを検索します。

resourceIdGUID*inリソーステクスチャを識別する一意の ID。
resourceTextureID2D1ResourceTexture**outDirect2D エフェクトでリソースとして使用できる、返されるテクスチャ。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_NOTFOUND 要求されたリソーステクスチャが見つかりませんでした。
vtbl 17 HRESULT CreateVertexBuffer(D2D1_VERTEX_BUFFER_PROPERTIES* vertexBufferProperties, GUID* resourceId, D2D1_CUSTOM_VERTEX_BUFFER_PROPERTIES* customVertexBufferProperties, ID2D1VertexBuffer** buffer)

頂点バッファーを作成する、または標準の頂点バッファーを検索し、必要に応じて頂点で初期化します。

vertexBufferPropertiesD2D1_VERTEX_BUFFER_PROPERTIES*in頂点バッファーと頂点シェーダーを記述するために使用するプロパティ。
resourceIdGUID*inoptional頂点バッファーを識別する一意の ID。
customVertexBufferPropertiesD2D1_CUSTOM_VERTEX_BUFFER_PROPERTIES*inoptionalカスタム頂点バッファーを定義するために使用するプロパティ。組み込みの頂点シェーダーを使用する場合、このプロパティを指定する必要はありません。
bufferID2D1VertexBuffer**out返される頂点バッファー。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
vtbl 18 HRESULT FindVertexBuffer(GUID* resourceId, ID2D1VertexBuffer** buffer)

指定した頂点バッファーが、同じ GUID を使って ID2D1EffectContext::CreateVertexBuffer で既に作成されている場合に、それを検索します。

resourceIdGUID*in頂点バッファーを識別する一意の ID。
bufferID2D1VertexBuffer**outDirect2D エフェクトでリソースとして使用できる、返される頂点バッファー。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_NOTFOUND 要求された頂点バッファーが見つかりませんでした。
vtbl 19 HRESULT CreateColorContext(D2D1_COLOR_SPACE space, BYTE* profile, DWORD profileSize, ID2D1ColorContext** colorContext)

色空間からカラーコンテキストを作成します。

spaceD2D1_COLOR_SPACEin作成するカラーコンテキストの色空間。
profileBYTE*inoptionalspaceD2D1_COLOR_SPACE_CUSTOM の場合に、カラーコンテキストの初期化に使用する ICC プロファイルのバイト列を格納するバッファー。その他の型の場合、このパラメーターは無視され、NULL に設定する必要があります。
profileSizeDWORDinProfile のサイズ(バイト単位)。
colorContextID2D1ColorContext**outこのメソッドが返るときに、新しいカラーコンテキストオブジェクトへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効な値がメソッドに渡されました。
vtbl 20 HRESULT CreateColorContextFromFilename(LPWSTR filename, ID2D1ColorContext** colorContext)

指定したファイル名からロードすることで、カラーコンテキストを作成します。プロファイルのバイト列は、filename で指定したファイルの内容です。

filenameLPWSTRinカラーコンテキストの初期化に使用するプロファイルのバイト列を含むファイルへのパス。
colorContextID2D1ColorContext**outこのメソッドが返るときに、新しいカラーコンテキストへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効な値がメソッドに渡されました。
vtbl 21 HRESULT CreateColorContextFromWicColorContext(IWICColorContext* wicColorContext, ID2D1ColorContext** colorContext)

IWICColorContext からカラーコンテキストを作成します。作成されるコンテキストの D2D1ColorContext の色空間は状況によって異なります。詳細については「解説」を参照してください。(ID2D1EffectContext.CreateColorContextFromWicColorContext)

wicColorContextIWICColorContext*inカラーコンテキストの初期化に使用する IWICColorContext
colorContextID2D1ColorContext**outこのメソッドが返るときに、新しいカラーコンテキストへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効な値がメソッドに渡されました。

解説(Remarks)

新しいカラーコンテキストは、D2D1_BITMAP_PROPERTIES1 で使用して、作成したビットマップのカラーコンテキストを初期化できます。プロファイルヘッダーの model フィールドを検査して、このプロファイルが sRGB か scRGB かを判定し、それに応じて色空間が更新されます。それ以外の場合、色空間はカスタムになります。

vtbl 22 HRESULT CheckFeatureSupport(D2D1_FEATURE feature, void* featureSupportData, DWORD featureSupportDataSize)

オプションの機能が D3D デバイスでサポートされているかどうかを示します。

featureD2D1_FEATUREinサポート状況を照会する機能。
featureSupportDatavoid*out機能がどのようにサポートされているか、またはサポートされているかどうかに関する情報を示す構造体。
featureSupportDataSizeDWORDinfeatureSupportData パラメーターのサイズ。

戻り値

型: HRESULT

このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。

HRESULT 説明
S_OK エラーは発生しませんでした。
E_OUTOFMEMORY 呼び出しを完了するのに十分なメモリを Direct2D が割り当てられませんでした。
E_INVALIDARG 無効なパラメーターが、値を返す関数に渡されました。
vtbl 23 BOOL IsBufferPrecisionSupported(D2D1_BUFFER_PRECISION bufferPrecision)

バッファー精度が、基盤となる Direct2D デバイスでサポートされているかどうかを示します。

bufferPrecisionD2D1_BUFFER_PRECISIONinチェックするバッファー精度。

戻り値

型: BOOL

バッファー精度がサポートされている場合は TRUE を返します。バッファー精度がサポートされていない場合は FALSE を返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_ID2D1EffectContext "{3D9F916B-27DC-4AD7-B4F1-64945340F563}"
#usecom global ID2D1EffectContext IID_ID2D1EffectContext "{}"
#comfunc global ID2D1EffectContext_GetDpi                                 3 var,var
#comfunc global ID2D1EffectContext_CreateEffect                           4 var,sptr
#comfunc global ID2D1EffectContext_GetMaximumSupportedFeatureLevel        5 var,int,var
#comfunc global ID2D1EffectContext_CreateTransformNodeFromEffect          6 sptr,sptr
#comfunc global ID2D1EffectContext_CreateBlendTransform                   7 int,var,sptr
#comfunc global ID2D1EffectContext_CreateBorderTransform                  8 int,int,sptr
#comfunc global ID2D1EffectContext_CreateOffsetTransform                  9 int,sptr
#comfunc global ID2D1EffectContext_CreateBoundsAdjustmentTransform        10 var,sptr
#comfunc global ID2D1EffectContext_LoadPixelShader                        11 var,var,int
#comfunc global ID2D1EffectContext_LoadVertexShader                       12 var,var,int
#comfunc global ID2D1EffectContext_LoadComputeShader                      13 var,var,int
#comfunc global ID2D1EffectContext_IsShaderLoaded                         14 var
#comfunc global ID2D1EffectContext_CreateResourceTexture                  15 var,var,var,var,int,sptr
#comfunc global ID2D1EffectContext_FindResourceTexture                    16 var,sptr
#comfunc global ID2D1EffectContext_CreateVertexBuffer                     17 var,var,var,sptr
#comfunc global ID2D1EffectContext_FindVertexBuffer                       18 var,sptr
#comfunc global ID2D1EffectContext_CreateColorContext                     19 int,var,int,sptr
#comfunc global ID2D1EffectContext_CreateColorContextFromFilename         20 wstr,sptr
#comfunc global ID2D1EffectContext_CreateColorContextFromWicColorContext  21 sptr,sptr
#comfunc global ID2D1EffectContext_CheckFeatureSupport                    22 int,sptr,int
#comfunc global ID2D1EffectContext_IsBufferPrecisionSupported             23 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。