ID3D11ClassInstance
COM公式ドキュメント
このインターフェイスは HLSL クラスをカプセル化します。
解説(Remarks)
このインターフェイスは ID3D11ClassLinkage::CreateClassInstance を呼び出して作成されます。このインターフェイスは、ID3D11DeviceContext::VSSetShader などの API を使用してシェーダーリソースをパイプラインにバインドする際に使用します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
現在の HLSL クラスに関連付けられている ID3D11ClassLinkage オブジェクトを取得します。
| ppLinkage | ID3D11ClassLinkage** | out | ID3D11ClassLinkage インターフェイスポインターへのポインター。 |
解説(Remarks)
ID3D11ClassInstance インターフェイスの使用方法の詳細については、動的リンク を参照してください。
Windows Phone 8: この API はサポートされています。
現在の HLSL クラスの説明を取得します。
| pDesc | D3D11_CLASS_INSTANCE_DESC* | out | 現在の HLSL クラスを記述する D3D11_CLASS_INSTANCE_DESC 構造体へのポインター。 |
解説(Remarks)
ID3D11ClassInstance インターフェイスの使用方法の詳細については、 動的リンク を参照してください。
インスタンスは、単一のシェーダー内の単一の型に対してのみ使用が限定されるものではありません。インスタンスは柔軟であり、そのインスタンスが生成されたときと同じ型名またはインスタンス名を使用している任意のシェーダーで利用できます。
- 作成されたインスタンスは、同じ型名の型を含む任意のシェーダーで機能します。 たとえば、型名 DefaultShader で作成されたクラスインスタンスは、複数のシェーダーがそれぞれ異なる型を記述していたとしても、DefaultShader という型を含む任意のシェーダーで機能します。
- 取得されたインスタンスは、シェーダー内のインスタンス名/インデックスに直接対応付けられます。 GetClassInstance を使用して取得したクラスインスタンスは、実行時インスタンスの生成に使用した名前のクラスインスタンスを含む任意のシェーダーで機能し、使用されるすべてのシェーダーで同じ型である必要はありません。
Windows Phone 8: この API はサポートされています。
現在の HLSL クラスのインスタンス名を取得します。
| pInstanceName | LPSTR | outoptional | 現在の HLSL クラスのインスタンス名。 |
| pBufferLength | UINT_PTR* | inout | pInstanceName パラメーターの長さ。 |
解説(Remarks)
GetInstanceName が有効な名前を返すのは、 ID3D11ClassLinkage::GetClassInstance を使用して取得したインスタンスの場合のみです。
ID3D11ClassInstance インターフェイスの使用方法の詳細については、 動的リンク を参照してください。
Windows Phone 8: この API はサポートされています。
現在の HLSL クラスの型を取得します。
| pTypeName | LPSTR | outoptional | 現在の HLSL クラスの型。 |
| pBufferLength | UINT_PTR* | inout | pTypeName パラメーターの長さ。 |
解説(Remarks)
GetTypeName が有効な名前を返すのは、ID3D11ClassLinkage::GetClassInstance を使用して取得したインスタンスの場合のみです。
ID3D11ClassInstance インターフェイスの使用方法の詳細については、動的リンク を参照してください。
Windows Phone 8: この API はサポートされています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D11ClassInstance "{A6CD7FAA-B0B7-4A2F-9436-8662A65797CB}" #usecom global ID3D11ClassInstance IID_ID3D11ClassInstance "{}" #comfunc global ID3D11ClassInstance_GetClassLinkage 7 sptr #comfunc global ID3D11ClassInstance_GetDesc 8 var #comfunc global ID3D11ClassInstance_GetInstanceName 9 var,var #comfunc global ID3D11ClassInstance_GetTypeName 10 var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D11ClassInstance "{A6CD7FAA-B0B7-4A2F-9436-8662A65797CB}" #usecom global ID3D11ClassInstance IID_ID3D11ClassInstance "{}" #comfunc global ID3D11ClassInstance_GetClassLinkage 7 sptr #comfunc global ID3D11ClassInstance_GetDesc 8 sptr #comfunc global ID3D11ClassInstance_GetInstanceName 9 sptr,sptr #comfunc global ID3D11ClassInstance_GetTypeName 10 sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。