Microsoft DirectX version 6.0は、IDirect3DRMTexture3インターフェイスを導入している。IDirect3DRMTexture3は、それが置換する旧のIDirect3DRMTexture2とIDirect3DRMTextureインターフェイスを拡張し、テクスチャ管理に対するより洗練された制御を可能にする。テキスチャ管理の概要は、「テクスチャ」を参照すること。Direct3D保持モードインターフェイスの履歴については、「インターフェイスの変更点」を参照すること。
IDirect3DRMTexture3は、テクスチャの変更リージョンを指定可能にすることで、Changedメソッドの機能を拡張する。また、これは、テクスチャ管理キャッシングメソッドのGetCacheOptionsとSetCacheOptionsも提供する。IDirect3DRMTexture3が提供するその他の新しいメソッドとして、GetSurface、SetDownSampleCallback、および<SetValidationCallbackがある。
旧のIDirect3DRMTexture2が追加し、IDirect3DRMTexture3もサポートする以前の新しいメソッドには、InitFromResource2が含まれる。これは、DLLおよび現在の実行ファイルを除く実行可能プログラムからリソースをロードできるようにする。InitFromImageメソッドは、メモリ中のイメージからテクスチャを生成する。このメソッドは、IDirect3DRM3::CreateTextureメソッドと同等である。GenerateMIPMapメソッドは、ソースイメージからミップマップを作り出す。
テクスチャを作成するときに不必要な遅延を避けるため、再利用するテクスチャは保持しておいて、必要になるたびに作成しなくてすむようにする。最適なパフォーマンスを得るには、使用するデバイスのサポートするテクスチャサーフェスフォーマットを使う。これにより、テクスチャを作成してから変更するときに、手間のかかるフォーマット変換を回避することができる。
IDirect3DRM3::LoadTextureによりテクスチャコールバック関数にロードされたテクスチャへの参照を保持する方法を示す例は、IDirect3DRM3::LoadTextureの注意を参照すること。
IDirect3DRMTexture3インターフェイスのメソッドは、以下のグループにまとめることができる。
すべてのCOMインターフェイスと同様、IDirect3DRMTexture3インターフェイスはIUnknownインターフェイスメソッドを継承する。IUnknownインターフェイスは、以下の3つのメソッドをサポートする。
AddRef |
QueryInterface |
Release |
さらに、IDirect3DRMTexture3インターフェイスは、IDirect3DRMObjectインターフェイスから以下のメソッドを継承する。
AddDestroyCallback |
Clone |
DeleteDestroyCallback |
GetAppData |
GetClassName |
GetName |
SetAppData |
SetName |
IDirect3DRMTexture3オブジェクトを作成するには、IDirect3DRM3::CreateTextureまたはIDirect3DRM3::CreateTextureFromSurfaceを呼び出す。
アプリケーションでテクスチャのどのリージョンを変更するかを指定可能にする。
構文
HRESULT Changed( DWORD dwFlags, DWORD dwcRects, LPRECT pRects);
パラメータ
- dwFlags
- 次のフラグを定義する。
- D3DRMTEXTURE_CHANGEDPIXELS
- ピクセル値が変更されたことを示す。
- D3DRMTEXTURE_CHANGEDPALETTE
- パレットが変更されたことを示す。
- D3DRMTEXTURE_INVALIDATEONLY
- テクスチャリージョンが無効になったが、アプリケーションで更新する必要がないことを示す。これは、Direct3D保持モードがテクスチャをレンダリングする前に、アプリケーションを呼び出し、1次ソースを更新する。このコールバックはSetValidationCallbackによってセットされる。
- dwcRects
- pRectsがポイントするRECT構造体の数。この値が0で、dwFlagsにD3DRMTEXTURE_CHANGEDPIXELSまたはD3DRMTEXTURE_INVALIDATEONLYが含まれる場合、テクスチャ全体が更新される。
- pRects
- 変更されたピクセルのリージョンを記述するRECT構造体の配列。dwFlagsにD3DRMTEXTURE_CHANGEDPIXELSまたはD3DRMTEXTURE_INVALIDATEONLYが含まれる場合、pRectsパラメータだけが有効である。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入されたこのメソッドは、旧のIDirect3DRMTexture::Changedメソッドを置換する。この旧のメソッドには、アプリケーションがテクスチャのピクセルまたはパレットを変更したかどうかを示す2つのブールパラメータがある。
単一のイメージソースからミップマップを生成する。
構文
HRESULT GenerateMIPMap(
DWORD dwFlags
);
パラメータ
- dwFlags
- 0をセットする必要がある。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、テクスチャの作成後はいつでも呼び出すことができる。このメソッドは、レベル間の双一次フィルタリングによってソースイメージのミップマップを1×1の解像度まで生成できる。ミップマップが生成されると、マップはいつでも使用可能で、IDirect3DRMTexture3::Changedを呼び出して、更新することができる。ミップマッピングを使用する場合には、IDirect3DRMDevice3::SetTextureQualityを使用して、テクスチャのクオリティをD3DRMTEXTURE_MIPNEAREST、D3DRMTEXTURE_MIPLINEAR、D3DRMTEXTURE_LINEARMIPNEAREST、またはD3DRMTEXTURE_LINEARMIPLINEARに変更することを忘れてはならない。特別のミップマップレベルは、テクスチャクオリティがミップマッピング型を含み、かつハードウェアデバイスがミップマッピングをサポートしない限り、ハードウェアデバイスのビデオメモリに格納されない。
参照
「ミップマップ」
テクスチャメモリが制限されている場合に、テクスチャ管理で現在のテクスチャをどのように処理するかに関する情報を取得する。
構文
HRESULT GetCacheOptions( LPLONG lplImportance, LPDWORD lpdwFlags);
パラメータ
- lplImportance
- テクスチャの相対的な重要度を示す符号付きの値。デフォルトは0である。値が大きければ、重要度が高いことを示す。この値を使用して、テクスチャメモリが制限されている場合にどのテクスチャを最後にダウンサンプルするかを計算する。
- lpdwFlags
- 現在のテクスチャに関するテクスチャ管理システムを制御するフラグ。現在定義されているフラグは、次の通りである。
- D3DRMTEXTURE_FORCERESIDENT
- テクスチャを(ハードウェアシナリオ中の) ビデオメモリに保持することを示す。
- D3DRMTEXTURE_STATIC
- テクスチャが変わらないことを示す。アプリケーションは、決してChangedメソッドを使用しない。
- D3DRMTEXTURE_DOWNSAMPLEPOINT
- テクスチャのダウンサンプル時にポイントフィルタリングを使用することを示す。
- D3DRMTEXTURE_DOWNSAMPLEBILINEAR
- テクスチャのダウンサンプル時に双一次フィルタリングを使用することを示す。
- D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH
- テクスチャのダウンサンプル時にピクセル深度が減少することを示す。
- D3DRMTEXTURE_DOWNSAMPLENONE
- テクスチャを決してダウンサンプルしないことを示す。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
Direct3DRMTexture2オブジェクトをレンダリングするために使用する色の最大数を取得する。
構文
DWORD GetColors( );
戻り値
色の数を返す。
注意
このメソッドは、Direct3DRMTexture2オブジェクトが作成された元のイメージ中の色の数ではなく、Direct3DRMTexture2オブジェクトが量子化された色の数を返す。したがって、戻り値の色の数は通常、IDirect3DRM3::SetDefaultTextureColorsメソッドを呼び出して設定した色に一致する。ただし、IDirect3DRMTexture3::SetColorsメソッドを明示的に呼び出してDirect3DRMTexture2オブジェクトの色を変更した場合は、そうはならない。
参照
デカールの現在の原点を取得する。
構文
HRESULT GetDecalOrigin(
LONG *lplX,
LONG *lplY
);
パラメータ
- lplX, lplY
- メソッドが戻ったとき、デカールの原点がセットされる変数のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
指定のデカールのスケーリングプロパティを取得する。
構文
DWORD GetDecalScale( );
戻り値
成功すればスケーリングプロパティ、失敗すれば-1を返す。
参照
デカールのサイズを取得する。
構文
HRESULT GetDecalSize(
D3DVALUE *lprvWidth,
D3DVALUE *lprvHeight
);
パラメータ
- lprvWidth, lprvHeight
- メソッドが戻ったとき、デカールの幅と高さがセットされる変数のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
デカールの透明プロパティを取得する。
構文
BOOL GetDecalTransparency( );
戻り値
デカールが透明な色を持っているとTRUE、そうでないとFALSEを返す。
参照
デカールの透明な色を取得する。
構文
D3DCOLOR GetDecalTransparentColor( );
戻り値
透明な色の値を返す。
参照
テクスチャを作成したときに使用したイメージのアドレスを返す。
構文
D3DRMIMAGE *GetImage( );
戻り値
現在のDirect3DRMTexture2オブジェクトを生成するのに使用したD3DRMIMAGE構造体のアドレスを返す。
レンダリング時にテクスチャ中の各色に対して使用されるシェード数を返す。
構文
DWORD GetShades( );
戻り値
シェード数を返す。
参照
テクスチャを作成するために使用したDirectDrawサーフェスを取得する。これは、CreateTextureFromSurfaceまたはInitFromSurfaceがテクスチャの作成に使用された場合にのみ、サーフェスを取得する。
構文
HRESULT GetSurface( DWORD dwFlags, LPDIRECTDRAWSURFACE *lplpDDS);
パラメータ
- dwFlags
- フラグ値。0でなければならない。
- lplpDDS
- 対応するDirectDrawサーフェスのインターフェイスへのポインタを受け取る変数のアドレス。インターフェイスの参照カウントは、インターフェイスが呼び出し元に渡される前にインクリメントされることに注意すること。
戻り値
次の値のうち1つを返す。
D3DRMERR_NOTCREATEDFROMDDS DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
指定ファイル中の情報を使用してDirect3DRMTexture2オブジェクトを初期化する。
構文
HRESULT InitFromFile(
LPCSTR filename
);
パラメータ
- filename
- テクスチャの初期化情報を取得するファイルを指定する文字列。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DRM3::CreateTextureまたはIDirect3DRM3::CreateTextureFromSurfaceメソッドを使用して、初期化するDirect3DRMTexture2オブジェクトを作成しておかなければならない。
参照
IDirect3DRMTexture3::InitFromImage, IDirect3DRMTexture3::InitFromResource2, IDirect3DRMTexture3::InitFromSurface
メモリ中のイメージからテクスチャを初期化する。
構文
HRESULT InitFromImage(
LPD3DRMIMAGE lpImage
);
パラメータ
- lpImage
- テクスチャのソースを記述するD3DRMIMAGE構造体のアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DRM3::CreateTextureまたはIDirect3DRM3::CreateTextureFromSurfaceメソッドを使用して、初期化するIDirect3DRMTexture3オブジェクトを作成しておかなければならない。
参照
IDirect3DRMTexture3::InitFromFile, IDirect3DRMTexture3::InitFromResource2, IDirect3DRMTexture3::InitFromSurface
指定のリソースからDirect3DRMTexture2オブジェクトを初期化する。
構文
HRESULT InitFromResource2(
HModule hModule,
LPCTSTR strName,
LPCTSTR strType
);
パラメータ
- hModule
- 指定のリソースのハンドル。
- strName
- テクスチャを初期化するのに使用するリソース名。
- strType
- テクスチャを初期化するのに使用するリソースのタイプ名。テクスチャは、RT_BITMAおよびRT_RCDATAリソースタイプまたはユーザ定義タイプの中に格納できる。リソースタイプがユーザ定義されていれば、このメソッドは、そのリソースモジュールハンドル、リソース名、およびリソースタイプをFindResource Win32 APIに渡す。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
IDirect3DRM3::CreateTextureまたはIDirect3DRM3::CreateTextureFromSurfaceメソッドを使用して、初期化するIDirect3DRMTexture3オブジェクトを作成しておかなければならない。
参照
IDirect3DRMTexture3::InitFromFile, IDirect3DRMTexture3::InitFromImage, IDirect3DRMTexture3::InitFromSurface
指定したDirectDrawサーフェスからのデータを使用して、Direct3DRMTexture2オブジェクトを初期化する。このメソッドは、IDirect3DRMTexture3::InitFromSurfaceと同じ機能を実行する。
構文
HRESULT InitFromSurface(
LPDIRECTDRAWSURFACE lpDDS
);
パラメータ
- lpDDS
- 初期化情報を取得するDirectDrawサーフェスのアドレス。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
DirectDrawサーフェスからテクスチャを作成する場合、サーフェスをシステムメモリ中に作成するのが最善である。これによって、ソフトウェアデバイスの最適なパフォーマンスが可能になり、Direct3D保持モードがハードウェアデバイスに対してビデオメモリの使用をより効率的に管理できるようになる。
参照
IDirect3DRMTexture3::InitFromFile, IDirect3DRMTexture3::InitFromImage, IDirect3DRMTexture3::InitFromResource2
テクスチャメモリが制限されている場合に、テクスチャ管理でこのテクスチャをどのように処理するかに関する情報を提供する。
構文
HRESULT SetCacheOptions( LONG lImportance, DWORD dwFlags);
パラメータ
- lImportance
- テクスチャの相対的な重要度を示す符号付きの値。デフォルトは0である。値が大きければ、重要度が高いことを示す。この値を使用して、テクスチャメモリが制限されている場合にどのテクスチャを最後にダウンサンプルするかを計算する。
- dwFlags
- 現在のテクスチャに関するテクスチャ管理システムを制御するフラグ。現在定義されているフラグは、次の通りである。
- D3DRMTEXTURE_FORCERESIDENT
- テクスチャを(ハードウェアシナリオ中の) ビデオメモリに保持することを示す。
- D3DRMTEXTURE_STATIC
- テクスチャが変わらないことを示す。
- D3DRMTEXTURE_DOWNSAMPLEPOINT
- テクスチャのダウンサンプル時にポイントフィルタリングを使用することを示す。
- D3DRMTEXTURE_DOWNSAMPLEBILINEAR
- テクスチャのダウンサンプル時に双一次フィルタリングを使用することを示す。
- D3DRMTEXTURE_DOWNSAMPLEREDUCEDEPTH
- テクスチャのダウンサンプル時にピクセル深度が減少することを示す。下位ビットの深度が使用可能でなければ、テクスチャのサイズが減少する。
- D3DRMTEXTURE_DOWNSAMPLENONE
- テクスチャを決してダウンサンプルしないことを示す。デフォルト値はD3DRMTEXTURE_DOWNSAMPLEPOINTである。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
このメソッドは、DirectX version 6.0とともに導入された。
Direct3DRMTexture2オブジェクトをレンダリングするのに使用する色の最大数を設定する。このメソッドは、ランプカラーモデルに限り必要となる。
構文
HRESULT SetColors(
DWORD ulColors
);
パラメータ
- ulColors
- 色の数。デフォルト値は8である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
デカールの左上からのオフセットとしてデカールの原点を設定する。
構文
HRESULT SetDecalOrigin(
LONG lX,
LONG lY
);
パラメータ
- lX, lY
- デカール座標でのデカールの新しい原点。デフォルトの原点は[0, 0]である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
デカール原点は、レンダリング時にそのフレームの位置にマップされる。たとえば、十字のデカールの原点は、デカールの中点に設定され、下向きの矢印の原点は、底辺にそった中点に設定される。
このメソッドは、Direct3DRMTextureInterpolatorオブジェクトにデカール原点を追加するためにも使用する。
参照
デカールのスケーリングプロパティを設定する。
構文
HRESULT SetDecalScale(
DWORD dwScale
);
パラメータ
- dwScale
- このパラメータがTRUEの場合、デカールをスケーリングする場合に深度が考慮され、デカールがシーンのフレーム上のテクスチャである場合、ビューアから遠くにあれば小さく、ビューアの近くにあれば大きくスケーリングされる。FALSEの場合、深度情報は無視され、デカールはビューアからの遠近にかかわらず同じサイズとなる。デフォルト値はTRUEである。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
シーン中のデカールの深度に従って、デカールがスケーリングされる場合に、使用されるデカールのサイズを設定する。
構文
HRESULT SetDecalSize(
D3DVALUE rvWidth,
D3DVALUE rvHeight
);
パラメータ
- rvWidth, rvHeight
- モデル座標における、デカールの新しい幅と高さ。デフォルトサイズは、[1, 1]である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMTextureInterpolatorオブジェクトにデカールサイズキーを追加するためにも使用する。
参照
デカールの透明プロパティを設定する。
構文
HRESULT SetDecalTransparency(
BOOL bTransp
);
パラメータ
- bTransp
- このパラメータがTRUEの場合、デカールは透明の色を持つ。FALSEの場合、不透明の色を持つ。デフォルト値はFALSEである。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
デカールの透明な色を設定する。
構文
HRESULT SetDecalTransparentColor(
D3DCOLOR rcTransp
);
パラメータ
- rcTransp
- 新しい透明な色。デフォルトの透明な色は黒である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
注意
このメソッドは、Direct3DRMTextureInterpolatorオブジェクトにデカールの透明色キーを追加するためにも使用する。
参照
テクスチャのダウンサンプル時に、D3DRM 組み込みメソッドを使用するのではなく、テクスチャ管理が使用するコールバックを指定する。コールバックがすでに指定されている場合、新しいコールバックは旧のものを置換する。コールバックがNULLならば、現在のコールバックは削除される。
構文
typedef HRESULT (CDECL *D3DRMDOWNSAMPLECALLBACK) (LPVOID pArg, LPDIRECTDRAWSURFACE pDDSSrc, LPDIRECTDRAWSURFACE pDDSDst); HRESULT SetDownsampleCallback( LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, D3DRMDOWNSAMPLECALLBACK pCallback, LPVOID pArg);
パラメータ
- pCallback
- ダウンサンプリングを実行するために呼び出されるコールバック関数へのポインタ。値NULLは、現在のコールバックが削除されることを示す。
- pArg
- 呼び出し時にコールバックに渡されるアプリケーション固有のデータ。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
ダウンサンプリングは、ビデオメモリがオーバーロードになり、テクスチャサーフェスのサイズを削減する必要があるときに実行される。Direct3D保持モードでは、DirectDrawブロック転送や双一次フィルタリングなどの、テクスチャサイズを削減するデフォルトのメソッドが提供されるが、ユーザは独自のメソッドを持つコールバックを定義してテクスチャサイズをスケールダウンすることができる。
このメソッドは、DirectX version 6.0とともに導入された。
参照
レンダリング時に、Direct3DRMTexture2オブジェクトの各色に対して使用するシェードの最大数を設定する。このメソッドは、ランプカラーモデルに限り必要となる。
構文
HRESULT SetShades(
DWORD ulShades
);
パラメータ
- ulShades
- 新しいシェード数。この値は、2の累乗でなければならない。デフォルト値は16である。
戻り値
成功すればD3DRM_OK、失敗すればエラーを返す。可能な戻り値のリストについては、「Direct3D保持モードの戻り値」を参照すること。
参照
1次ソーステクスチャの妥当性検査と更新を行うコールバック関数をセットする。
構文
typedef HRESULT (CDECL *D3DRMVALIDATIONCALLBACK) (LPVOID pArg, DWORD dwFlags, DWORD dwcRects, LPRECT pRects); HRESULT SetValidationCallback( LPDIRECT3DRMTEXTURE3 lpDirect3DRMTexture, D3DRMVALIDATIONCALLBACK pCallback, LPVOID pArg);
パラメータ
- pCallback
- 妥当性検査を実行するために呼び出されるコールバック関数へのポインタ。コールバックがすでに指定されている場合、新しいコールバックは旧のものを置換する。NULLが指定されていれば、現在のコールバックは削除される。
- pArg
- 呼び出し時にコールバックに渡されるアプリケーション固有のデータ。
戻り値
次の値のうち1つを返す。
DDERR_INVALIDOBJECT DDERR_INVALIDPARAMS DD_OK
注意
Direct3D保持モードは、変更済みであるが更新されていないことを意味する無効のマークが付けられたテクスチャリージョンを、更新する必要があるときに、テクスチャ妥当性検査コールバックを呼び出す。アプリケーションは1次ソースを更新し、戻る。
このメソッドは、DirectX version 6.0とともに導入された。
参照
トップに戻る
© 1999 Microsoft and/or its suppliers. All rights reserved. Terms of Use.