Microsoft DirectX 8.0 (C++)

D3DXCreateCubeTextureFromFileInMemoryEx

メモリ内のファイルからキューブ テクスチャを作成する。これは、D3DXCreateCubeTextureFromFileInMemory よりも高度な関数である。

HRESULT D3DXCreateCubeTextureFromFileInMemoryEx(
  LPDIRECT3DDEVICE8 pDevice,
  LPCVOID pSrcData,
  UINT SrcDataSize,
  UINT Size,
  UINT MipLevels,
  DWORD Usage,
  D3DFORMAT Format,
  D3DPOOL Pool,
  DWORD Filter,
  DWORD MipFilter,
  D3DCOLOR ColorKey,
  D3DXIMAGE_INFO* pSrcInfo,
  PALETTEENTRY* pPalette,
  LPDIRECT3DCUBETEXTURE8* ppCubeTexture
);

パラメータ

pDevice
[in] キューブ テクスチャに関連付けられるデバイスを表す IDirect3DDevice8 インターフェイスへのポインタ。
pSrcData
[in] キューブ テクスチャの作成に使用するメモリ内のファイルへのポインタ。「注意」を参照すること。
SrcDataSize
[in] メモリ内のファイルのサイズ (バイト単位)。
Size
[in] 幅と高さ (ピクセル単位)。この値が 0 または D3DX_DEFAULT の場合、ディメンジョンはファイルから取得される。
MipLevels
[in] 要求されるミップ レベルの数。この値が 0 または D3DX_DEFAULT の場合は、完全なミップマップ チェーンが作成される。
Usage
[in] 0 または D3DUSAGE_RENDERTARGET。このフラグに D3DUSAGE_RENDERTARGET を設定すると、そのサーフェスはレンダリング ターゲットとして使用されることを示す。リソースは、SetRenderTarget メソッドの pNewRenderTarget パラメータに渡すことができる。D3DUSAGE_RENDERTARGET を指定する場合、アプリケーションは IDirect3D8::CheckDeviceFormat を呼び出して、デバイスがこれらの処理をサポートしていることを確認する必要がある。「注意」を参照すること。
Format
[in] キューブ テクスチャに対して要求されたピクセル フォーマットを記述する、D3DFORMAT 列挙型のメンバ。返されるテクスチャのフォーマットは Format で指定されたフォーマットと異なる場合がある。アプリケーションは、返されたテクスチャのフォーマットを確認する必要がある。Format が D3DFMT_UNKNOWN の場合、フォーマットはファイルから取得される。
Pool
[in] キューブ テクスチャの配置先となるメモリ クラスを記述する、D3DPOOL 列挙型のメンバ。
Filter
[in] イメージをフィルタリングする方法を制御する 1 つ以上のフラグの組み合わせ。このパラメータに D3DX_DEFAULT を指定することは、D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER を指定することと等しい。

有効なそれぞれのフィルタに、次のフラグの 1 つが含まれていなければならない。

D3DX_FILTER_BOX
各ピクセルは、ソース イメージ内の 2 × 2 (× 2) のサイズのボックスに含まれるピクセルの平均を算出することにより計算される。このフィルタは、ミップマップを使用する場合のように、転送先のディメンジョンがソースの半分の場合のみ機能する。
D3DX_FILTER_LINEAR
各転送先ピクセルは、最も近い 4 つのピクセルをソース イメージからサンプリングすることにより計算される。このフィルタは、両軸のスケールが 2 未満の場合に最も効率よく機能する。
D3DX_FILTER_NONE
スケーリングまたはフィルタリングを行わない。ソース イメージの境界の外側にあるピクセルは透明な黒であると見なされる。
D3DX_FILTER_POINT
各転送先ピクセルは、最も近いピクセルをソース イメージからサンプリングすることにより計算される。
D3DX_FILTER_TRIANGLE
ソース イメージ内の各ピクセルが、転送先イメージに等しく反映される。これは、最も処理に時間のかかるフィルタである。

さらに、OR 演算子を使用して、有効なフィルタと共に次に示すオプションのフラグを 0 個以上指定できる。内部的には、常に D3DX_FILTER_MIRROR フラグが使用される。

D3DX_FILTER_MIRROR
このフラグを指定すると、D3DX_FILTER_MIRROR_U、D3DX_FILTER_MIRROR_V、および D3DX_FILTER_MIRROR_W フラグを指定したことになる。このフラグは、この関数では常に内部的に使用される。
D3DX_FILTER_MIRROR_U
u 軸のテクスチャのエッジから離れたピクセルを、ラッピングせずにミラーリングするよう指定する。
D3DX_FILTER_MIRROR_V
v 軸のテクスチャのエッジから離れたピクセルを、ラッピングせずにミラーリングするよう指定する。
D3DX_FILTER_MIRROR_W
w 軸のテクスチャのエッジから離れているピクセルを、ラッピングせずにミラーリングするよう指定する。
D3DX_FILTER_DITHER
結果として作成されたイメージを、4x4 の順序付きディザ アルゴリズムを使ってディザリングする必要がある。
MipFilter
[in] イメージをフィルタリングする方法を制御する 1 つ以上のフラグの組み合わせ。このパラメータに D3DX_DEFAULT を指定することは、D3DX_FILTER_BOX を指定することと等しい。

有効なそれぞれのフィルタに、次のフラグの 1 つが含まれていなければならない。

D3DX_FILTER_BOX
各ピクセルは、ソース イメージ内の 2 × 2 (× 2) のサイズのボックスに含まれるピクセルの平均を算出することにより計算される。このフィルタは、ミップマップを使用する場合のように、転送先のディメンジョンがソースの半分の場合のみ機能する。
D3DX_FILTER_LINEAR
各転送先ピクセルは、最も近い 4 つのピクセルをソース イメージからサンプリングすることにより計算される。このフィルタは、両軸のスケールが 2 未満の場合に最も効率よく機能する。
D3DX_FILTER_NONE
スケーリングまたはフィルタリングを行わない。ソース イメージの境界の外側にあるピクセルは透明な黒であると見なされる。
D3DX_FILTER_POINT
各転送先ピクセルは、最も近いピクセルをソース イメージからサンプリングすることにより計算される。
D3DX_FILTER_TRIANGLE
ソース イメージ内の各ピクセルが、転送先イメージに等しく反映される。これは、最も処理に時間のかかるフィルタである。

さらに、OR 演算子を使用して、有効なフィルタと共に次に示すオプションのフラグを 0 個以上指定できる。内部的には、常に D3DX_FILTER_MIRROR フラグが使用される

D3DX_FILTER_MIRROR
このフラグを指定すると、D3DX_FILTER_MIRROR_U、D3DX_FILTER_MIRROR_V、および D3DX_FILTER_MIRROR_W フラグを指定したことになる。このフラグは、この関数では常に内部的に使用される。
D3DX_FILTER_MIRROR_U
u 軸のテクスチャのエッジから離れたピクセルを、ラッピングせずにミラーリングするよう指定する。
D3DX_FILTER_MIRROR_V
v 軸のテクスチャのエッジから離れたピクセルを、ラッピングせずにミラーリングするよう指定する。
D3DX_FILTER_MIRROR_W
w 軸のテクスチャのエッジから離れているピクセルを、ラッピングせずにミラーリングするよう指定する。
D3DX_FILTER_DITHER
結果として作成されたイメージを、4x4 の順序付きディザ アルゴリズムを使ってディザリングする必要がある。
ColorKey
[in] 透明となる D3DCOLOR の値。カラーキーを無効にする場合は 0 を指定する。ソース イメージのフォーマットとは関係なく、これは常に 32 ビットの ARGB カラーである。アルファが有意であり、通常はカラーキーを不透明にする場合は FF を指定する。したがって、不透明な黒の場合、値は 0xFF000000 となる。
pSrcInfo
[in, out] ソース イメージ ファイル内のデータの記述を格納する D3DXIMAGE_INFO 構造体へのポインタ、または NULL。
pPalette
[out] 格納する 256 色パレットを表す PALETTEENTRY 構造体へのポインタ、または NULL。「注意」を参照すること。
ppCubeTexture
[out] 作成されたキューブ テクスチャ オブジェクトを表す、IDirect3DCubeTexture8 インターフェイスへのポインタのアドレス。

戻り値

成功した場合は D3D_OK を返す。

失敗した場合は、次のいずれかの値を返す。

D3DERR_INVALIDCALL
D3DERR_NOTAVAILABLE
D3DERR_OUTOFVIDEOMEMORY
D3DXERR_INVALIDDATA
E_OUTOFMEMORY

注意

キューブ テクスチャは、サーフェスのコレクションである点でほかのサーフェスとは異なる。キューブ テクスチャを指定して SetRenderTarget を呼び出すには、IDirect3DCubeTexture8::GetCubeMapSurface を使用して個々の面を選択し、結果サーフェスを SetRenderTarget に渡す必要がある。

このメソッドは、アプリケーション定義のリソース (未加工データ) である、RT_RCDATA として格納されたイメージ ファイルをロードするために使用するように設計されている。それ以外の目的に使用すると、このメソッドは失敗する。

PALETTEENTRY の詳細については、Microsoft® Platform Software Development Kit (SDK) を参照すること。Microsoft DirectX® 8.0 の時点で、PALLETTEENTRY 構造体の peFlags メンバは、Platform SDK に説明されているようには機能しない。peFlags メンバは現在、8 ビットのパレット化されたフォーマット用のアルファ チャネルである。

D3DXCreateCubeTextureFromFileInMemoryEx は、DirectDrawSurface (DDS) ファイル フォーマットを使用する。DXTex ツールによって、ほかのファイル フォーマットからキューブ マップを生成し、それを DDS ファイル フォーマットで保存することができる。

動作環境

  ヘッダー : d3dx8mesh.h で宣言。