Platform SDK: DirectX

テクスチャの作成

Direct3DX ユーティリティ ライブラリを使用すると、D3DXCreateTexture 関数によりテクスチャを「空の」テクスチャとして作成できる (各ピクセルは 0 値により初期化される)。

また、BMP、DIB、TGA、および DDS ファイル フォーマットのロードをサポートした D3DXCreateTextureFromFile 関数を使用すれば 1 回の呼び出しでテクスチャをロードし、作成することもできる。

たとえば、次の呼び出しではビットマップ ファイル (texture.bmp) がロードされる。

    IDirectDrawSurface7 *m_ptex;
    m_pd3dDevice = m_pd3dx->GetD3DDevice();
 
    hr = D3DXCreateTextureFromFile(
            m_pd3dDevice,
            NULL,                   // dwFlags
            NULL,                   // 自動設定幅
            NULL,                   // 自動設定高さ
            NULL,                   // 自動設定サーフェス タイプ
            NULL,                   // Palette へのポインタ
            &m_ptex,                // 返されるテクスチャへのポインタ
            NULL,                   // 返されるミップマップ数
            "texture.bmp",          // テクスチャのファイル名
            D3DX_FT_DEFAULT);       // デフォルトのスケーリング

ただし、D3DXCreateTextureFromFile 関数により作成されたサーフェスは、ラスタライズ デバイスの要件に合わせるためにサイズやフォーマットが変更されている。結果として、このように作成されたサーフェスでは、高さ、幅、ミップマップ レベル、そしてサーフェスのピクセル フォーマットでさえデバイスごとに異なる可能性があるので、IDirectDrawSurface7::Lock を呼び出すことはお勧めしない。

D3DXCreateTexture 関数や D3DXCreateTextureFromFile 関数により作成されたサーフェスにピクセルを転送するときは、D3DXLoadTextureFromSurface 関数や D3DXLoadTextureFromFile 関数を使用することをお勧めする。これらの関数は、さまざまなフォーマットをすべて処理し、適切な再サンプリング操作を実行するように設計されている。