D3DXCreateTextureFromFileEx
ファイルを基にしてテクスチャーを作成します。これは、D3DXCreateTextureFromFile の上位の関数です。
HRESULT
D3DXCreateTextureFromFileEx(
LPDIRECT3DDEVICE9 pDevice,
LPCTSTR pSrcFile,
UINT Width,
UINT Height,
UINT MipLevels,
DWORD Usage,
D3DFORMAT Format,
D3DPOOL Pool,
DWORD Filter,
DWORD MipFilter,
D3DCOLOR ColorKey,
D3DXIMAGE_INFO * pSrcInfo,
PALETTEENTRY * pPalette,
LPDIRECT3DTEXTURE9 * ppTexture
);
パラメータ
- pDevice
IDirect3DDevice9 インターフェイスへのポインターです。テクスチャーに関連付けられるデバイスを示します。 - pSrcFile
ファイル名を指定する文字列へのポインターです。コンパイラーの設定で Unicode が必要な場合、データ型 LPCTSTR は LPCWSTR に解決されます。それ以外の場合、文字列データ型は LPCSTR に解決されます。「解説」を参照してください。 - Width
幅 (ピクセル単位) です。この値が 0 または D3DX_DEFAULT の場合、寸法はファイルから取得され、2 の累乗に丸められます。デバイスが 2 の累乗でないテクスチャーをサポートし D3DX_DEFAULT_NONPOW2 が指定されている場合、サイズの丸めは行われません。 - Height
高さ (ピクセル単位) です。この値が 0 または D3DX_DEFAULT の場合、寸法はファイルから取得され、2 の累乗に丸められます。デバイスが 2 の累乗でないテクスチャーをサポートし D3DX_DEFAULT_NONPOW2 が指定されている場合、サイズの丸めは行われません。 - MipLevels
ミップマップ レベル数の要求値です。この値が 0 または D3DX_DEFAULT の場合は、完全なミップマップのチェーンが作成されます。D3DX_FROM_FILE の場合、フォーマットはファイル内にあるまま取得され、デバイスの能力に違反する場合は呼び出しに失敗します。 - Usage
0, D3DUSAGE_RENDERTARGET または D3DUSAGE_DYNAMIC。このフラグを D3DUSAGE_RENDERTARGET に指定すると、サーフェスがレンダー ターゲットとして使用されます。その後でリソースを IDirect3DDevice9::SetRenderTarget メソッドの pNewRenderTarget パラメーターとして渡すことができます。D3DUSAGE_RENDERTARGET または D3DUSAGE_DYNAMIC を指定する場合は、Pool を D3DPOOL_DEFAULT に設定し、アプリケーションで IDirect3D9::CheckDeviceFormat を呼び出して、デバイスがこの処理をサポートしていることを確認する必要があります。D3DUSAGE_DYNAMIC はサーフェスが動的に処理されることを示します。「動的テクスチャーの使用」を参照してください。 - Format
D3DFORMAT 列挙型のメンバーです。テクスチャーに対して要求されたピクセル フォーマットを示します。返されるテクスチャーのフォーマットは、Format で指定されたものと異なる場合があります。アプリケーションでは、返されるテクスチャーのフォーマットをチェックする必要があります。D3DFMT_UNKNOWN の場合、ファイルからフォーマットが取得されます。D3DFMT_FROM_FILE の場合、フォーマットはファイル内にあるとおり正確に取得され、デバイスの能力に違反する場合は呼び出しに失敗します。 - Pool
D3DPOOL 列挙型のメンバーです。テクスチャーを配置するメモリー クラスを示します。 - Filter
イメージのフィルタリング方法を指定する、1 つ以上の D3DX_FILTER 定数の組み合わせです。このパラメーターに D3DX_DEFAULT を指定すると、D3DX_FILTER_TRIANGLE | D3DX_FILTER_DITHER を指定した場合と同じ結果になります。 - MipFilter
イメージのフィルタリング方法を指定する、1 つ以上の D3DX_FILTER 定数の組み合わせです。このパラメーターに D3DX_DEFAULT を指定すると、D3DX_FILTER_BOX を指定したのと同じ結果になります。さらに、ビット 27 ~ 31 を使用して、.dds テクスチャーがメモリーにロードされたときに (ミップマップ チェーンのトップから) スキップするミップ レベルの数を指定します。32 レベルまでスキップ可能です。 - ColorKey
透明な黒と置き換える D3DCOLOR 値、またはカラーキーを無効にする 0 を指定します。この値は、元のイメージのフォーマットに関係なく常に 32 ビットの ARGB カラーになります。最上位にはアルファ値を指定します。カラー キーを不透明にする場合には FF に設定します。したがって、不透明な黒の場合には、値が 0xFF000000 になります。 - pSrcInfo
ソース イメージ ファイル内のデータの記述を格納する D3DXIMAGE_INFO 構造体へのポインター、または NULL です。 - pPalette
PALETTEENTRY 構造体へのポインターです。カラー値を格納する 256 色パレットを示します。または NULL です。 - ppTexture
作成するテクスチャー オブジェクトを表す IDirect3DTexture9 インターフェイスへのポインターのアドレスです。
戻り値
成功すると、D3D_OK を返します。失敗した場合は、次の戻り値のいずれかを返します。D3DERR_INVALIDCALL
D3DERR_NOTAVAILABLED3DERR_OUTOFVIDEOMEMORYD3DXERR_INVALIDDATAE_OUTOFMEMORY
解説
コンパイラ設定により、関数のバージョンも決定されます。Unicode が定義されている場合、関数呼び出しは D3DXCreateTextureFromFileExW に解決されます。それ以外の場合は、ANSI 文字列が使用されるため、D3DXCreateTextureFromFileExA に解決されます。
デバイスが現在のステートが指定するテクスチャーをサポートするかどうかを確認するには D3DXCheckTextureRequirements を使用します。
この関数は、.bmp、.dds、.dib、.hdr、.jpg、.pfm、.png、.ppm、および .tga ファイル形式をサポートします。「D3DXIMAGE_FILEFORMAT」を参照してください。
ミップマップされたテクスチャーの各レベルには、ロードされたテクスチャーが自動的に格納されます。イメージをミップマップされたテクスチャーにロードするときに、デバイスによっては 1 x 1 のイメージに変換できず、関数の処理が失敗することがあります。この場合、イメージを手動でロードする必要があります。
D3DXCreateTextureFromFileEx を使用して最適なパフォーマンスを得るには、次のことを行います。
- イメージのスケーリングおよびフォーマット変換をロード時に行うと、処理に時間がかかる場合があります。イメージは、使用するときのフォーマットと解像度で保存します。ターゲット ハードウェアが 2 の累乗のディメンジョンを必要とする場合は、2 の累乗のディメンジョンを使ってイメージを作成し保存します。
- ロード時にミップマップ イメージを作成する場合は、D3DX_FILTER_BOX を使用してフィルターを適用します。ボックス フィルターは、D3DX_FILTER_TRIANGLE などの他の種類のフィルターよりはるかに高速に処理できます。
- DDS ファイルの使用を検討します。Direct3D 9 テクスチャー フォーマットはすべて DDS ファイルを使用して表現できるため、D3DX は DDS ファイルを簡単に読み取ることができます。また、DDS ファイルにミップマップを保存でき、任意のミップマップ生成アルゴリズムを使用してイメージを作成することができます。
.dds ファイルのロード中にミップマップ レベルをスキップする場合は、D3DX_SKIP_DDS_MIP_LEVELS マクロを使用して MipFilter 値を生成します。このマクロはスキップするレベル数とフィルター タイプを取得し、フィルター値を返します。フィルター値は MipFilter パラメーターに渡されます。
要件
ヘッダー: D3dx9tex.h 宣言
ライブラリ: D3dx9.lib 内容