ID3D10Texture1D
COM公式ドキュメント
1D テクスチャインターフェイスは、構造化されたメモリであるテクセルデータにアクセスします。(ID3D10Texture1D)
解説(Remarks)
空の 1D テクスチャを作成するには、ID3D10Device::CreateTexture1D を呼び出します。テクスチャの作成と読み込みの詳細については、Creating Texture Resources を参照してください。
テクスチャをパイプラインに直接バインドすることはできません。代わりに、ビューを作成してバインドする必要があります。ビューを使用すると、一定の制限の範囲内で実行時にテクスチャデータを解釈できます。テクスチャをレンダーターゲットまたは深度ステンシルリソースとして使用するには、それぞれ ID3D10Device::CreateRenderTargetView および ID3D10Device::CreateDepthStencilView を呼び出します。テクスチャをシェーダーへの入力として使用するには、ID3D10Device::CreateShaderResourceView を呼び出して作成します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
サブリソースに含まれるデータへのポインターを取得し、そのサブリソースへの GPU のアクセスを拒否します。
| Subresource | DWORD | in | サブリソースのインデックス番号。詳細については、D3D10CalcSubresource を参照してください。 |
| MapType | D3D10_MAP | in | リソースに対する CPU の読み取りおよび書き込み権限を指定します。指定可能な値については、D3D10_MAP を参照してください。 |
| MapFlags | DWORD | in | GPU がビジー状態のときに CPU が何を行うかを指定するフラグ。このフラグは省略可能です。 |
| ppData | void** | out | テクスチャリソースデータへのポインター。 |
戻り値
解説(Remarks)
テクスチャをマップすると、CPU がテクスチャのサブリソース内の基になるデータに直接アクセスできるようになります。このメソッドが成功するには、マップするテクスチャが適切なフラグ(D3D10_CPU_ACCESS_FLAG を参照)を指定して作成されており、かつ指定された使用法(D3D10_USAGE を参照)が D3D10_USAGE_DYNAMIC または D3D10_USAGE_STAGING のいずれかである必要があります。
Map メソッドの一般的な失敗は、次の戻り値で示されます。
| 項目 | 説明 |
|---|---|
| DXGI_ERROR_WAS_STILL_DRAWING | MapFlags に D3D10_MAP_FLAG_DO_NOT_WAIT が指定されていて、GPU がまだリソースの処理を完了していない場合、Map は DXGI_ERROR_WAS_STILL_DRAWING を返します。 |
| DXGI_ERROR_DEVICE_REMOVED | MapType が CPU の読み取りアクセスを許可していて、ビデオカードが取り外された場合、Map は DXGI_ERROR_DEVICE_REMOVED を返します。 |
上記の戻り値の詳細については、DXGI_ERROR を参照してください。
Map には次の制限があります。
- 1 つのサブリソースを複数回マップすることはできません。つまり、すでにマップされているサブリソースに対して Map を呼び出さないでください。
- パイプラインにバインドされているサブリソースは、レンダリング操作(すなわち ID3D10Device::Draw)を実行する前にアンマップする必要があります。
FLOAT* pTexels = (FLOAT*)pData;
for( UINT col = 0; col < width; col++ )
{
pTexels[col*4 + 0]; // Alpha
pTexels[col*4 + 1]; // Blue
pTexels[col*4 + 2]; // Green
pTexels[col*4 + 3]; // Red
}
|
Direct3D 9 と Direct3D 10 の違い:
Direct3D 10 の Map は、Direct3D 9 のリソースの Lock に相当します。 |
ID3D10Texture1D::Map によって取得されたリソースへのポインターを無効化し、そのリソースへの GPU のアクセスを再度有効にします。
| Subresource | DWORD | in | アンマップするサブリソース。詳細については、D3D10CalcSubresource を参照してください。 |
解説(Remarks)
Unmap を呼び出す前に、サブリソースがマップされている必要があります。
|
Direct3D 9 と Direct3D 10 の違い:
Direct3D 10 の Unmap は、Direct3D 9 のリソースの Unlock に相当します。 |
テクスチャリソースのプロパティを取得します。(ID3D10Texture1D.GetDesc)
| pDesc | D3D10_TEXTURE1D_DESC* | out | リソース記述へのポインター(D3D10_TEXTURE1D_DESC を参照)。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ID3D10Texture1D "{9B7E4C03-342C-4106-A19F-4F2704F689F0}" #usecom global ID3D10Texture1D IID_ID3D10Texture1D "{}" #comfunc global ID3D10Texture1D_Map 10 int,int,int,sptr #comfunc global ID3D10Texture1D_Unmap 11 int #comfunc global ID3D10Texture1D_GetDesc 12 var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_ID3D10Texture1D "{9B7E4C03-342C-4106-A19F-4F2704F689F0}" #usecom global ID3D10Texture1D IID_ID3D10Texture1D "{}" #comfunc global ID3D10Texture1D_Map 10 int,int,int,sptr #comfunc global ID3D10Texture1D_Unmap 11 int #comfunc global ID3D10Texture1D_GetDesc 12 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。