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

IDirect3DVolumeTexture9

COM
IID2518526c-e789-4111-a7b9-47ef328d13e6継承元IDirect3DBaseTexture9自前メソッド開始 vtbl17

公式ドキュメント

IDirect3DVolumeTexture9 (d3d9.h) インターフェイスは、ボリュームテクスチャーリソースを操作するためにアプリケーションが使用します。

解説(Remarks)

IDirect3DVolumeTexture9 インターフェイスは、CreateVolumeTexture メソッド、または D3DXCreateVolumeTexturexxx 関数のいずれかを呼び出すことで取得できます。

このインターフェイスは、IDirect3DBaseTexture9 インターフェイスから追加の機能を継承します。

このインターフェイスは、すべての COM インターフェイスと同様に、IUnknown インターフェイスを継承します。

LPDIRECT3DVOLUMETEXTURE9 型および PDIRECT3DVOLUMETEXTURE9 型は、IDirect3DVolumeTexture9 インターフェイスへのポインターとして定義されています。


typedef struct IDirect3DVolumeTexture9 *LPDIRECT3DVOLUMETEXTURE9, *PDIRECT3DVOLUMETEXTURE9;

メソッド 5

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

vtbl 17 HRESULT GetLevelDesc(DWORD Level, D3DVOLUME_DESC* pDesc)

IDirect3DVolumeTexture9::GetLevelDesc (d3d9.h) メソッドは、ボリュームテクスチャーリソースのレベルの記述を取得します。

LevelDWORDinボリュームテクスチャーリソースのレベルを指定します。このメソッドは、このパラメーターで指定されたレベルのボリュームの記述を返します。
pDescD3DVOLUME_DESC*inout返されるボリュームテクスチャーレベルを記述する D3DVOLUME_DESC 構造体へのポインター。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は D3D_OK です。引数のいずれかが無効な場合は D3DERR_INVALIDCALL が返されます。

vtbl 18 HRESULT GetVolumeLevel(DWORD Level, IDirect3DVolume9** ppVolumeLevel)

IDirect3DVolumeTexture9::GetVolumeLevel (d3d9.h) メソッドは、指定されたボリュームテクスチャーレベルを取得します。

LevelDWORDinボリュームテクスチャーリソースのレベルを指定します。このメソッドは、このパラメーターで指定されたレベルのボリュームを返します。
ppVolumeLevelIDirect3DVolume9**out返されるボリュームレベルを表す IDirect3DVolume9 インターフェイスへのポインターのアドレス。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は D3D_OK です。メソッドが失敗した場合、戻り値は D3DERR_INVALIDCALL になることがあります。

解説(Remarks)

このメソッドを呼び出すと、IDirect3DVolume9 インターフェイスの内部参照カウントが増加します。この IDirect3DVolume9 インターフェイスの使用を終えた際に IUnknown::Release を呼び出さないと、メモリリークが発生します。

vtbl 19 HRESULT LockBox(DWORD Level, D3DLOCKED_BOX* pLockedVolume, D3DBOX* pBox, DWORD Flags)

IDirect3DVolumeTexture9::LockBox (d3d9.h) メソッドは、ボリュームテクスチャーリソース上のボックスをロックします。

LevelDWORDinロックするボリュームテクスチャーリソースのレベルを指定します。
pLockedVolumeD3DLOCKED_BOX*inoutロックされた領域を記述する D3DLOCKED_BOX 構造体へのポインター。
pBoxD3DBOX*inロックするボリュームへのポインター。このパラメーターは D3DBOX 構造体へのポインターで指定します。このパラメーターに NULL を指定すると、ボリュームレベル全体がロックされます。
FlagsDWORDin

実行するロックの種類を記述する、0 個以上のロックフラグの組み合わせ。このメソッドで有効なフラグは次のとおりです。

フラグの説明については、D3DLOCK を参照してください。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は D3D_OK です。メソッドが失敗した場合、戻り値は D3DERR_INVALIDCALL になることがあります。

解説(Remarks)

パフォーマンス上の理由から、ダーティ領域はテクスチャーのレベル 0 に対してのみ記録されます。D3DLOCK_NO_DIRTY_UPDATE または D3DLOCK_READONLY を指定せずに LockBox を呼び出すと、ダーティ領域は自動的に記録されます。詳細については、UpdateTexture を参照してください。

vtbl 20 HRESULT UnlockBox(DWORD Level)

IDirect3DVolumeTexture9::UnlockBox (d3d9.h) メソッドは、ボリュームテクスチャーリソース上のボックスのロックを解除します。

LevelDWORDinロックを解除するボリュームテクスチャーリソースのレベルを指定します。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は D3D_OK です。メソッドが失敗した場合、戻り値は D3DERR_INVALIDCALL になることがあります。

vtbl 21 HRESULT AddDirtyBox(D3DBOX* pDirtyBox)

IDirect3DVolumeTexture9::AddDirtyBox (d3d9.h) メソッドは、ボリュームテクスチャーリソースにダーティ領域を追加します。

pDirtyBoxD3DBOX*in追加するダーティ領域を指定する D3DBOX 構造体へのポインター。NULL を指定すると、ダーティ領域はボリュームテクスチャー全体を覆うように拡張されます。

戻り値

型: HRESULT

メソッドが成功した場合、戻り値は D3D_OK です。メソッドが失敗した場合、戻り値は D3DERR_INVALIDCALL になることがあります。

解説(Remarks)

パフォーマンス上の理由から、ダーティ領域はテクスチャーのレベル 0 に対してのみ記録されます。サブレベルについては、対応する (スケーリングされた) ボックスも同様にダーティであると見なされます。D3DLOCK_NO_DIRTY_UPDATE または D3DLOCK_READONLY を指定せずに LockBox を呼び出すと、ダーティ領域は自動的に記録されます。

D3DLOCK_NO_DIRTY_UPDATE を使用してダーティ領域を明示的に指定することで、UpdateTexture の効率を高めることができます。この方法により、アプリケーションはリソース上のダーティボックスを指定して、リソースのどの部分をコピーするかを最適化できます。ただし、アライメントを最適化するためにダーティ領域が拡張される場合があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IDirect3DVolumeTexture9 "{2518526C-E789-4111-A7B9-47EF328D13E6}"
#usecom global IDirect3DVolumeTexture9 IID_IDirect3DVolumeTexture9 "{}"
#comfunc global IDirect3DVolumeTexture9_GetLevelDesc    17 int,var
#comfunc global IDirect3DVolumeTexture9_GetVolumeLevel  18 int,sptr
#comfunc global IDirect3DVolumeTexture9_LockBox         19 int,var,var,int
#comfunc global IDirect3DVolumeTexture9_UnlockBox       20 int
#comfunc global IDirect3DVolumeTexture9_AddDirtyBox     21 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。