Platform SDK: DirectX

ステップ 1.3 : テクスチャ管理を有効にする

[Visual Basic]

ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「Direct3D 直接モード Visual Basic チュートリアル」を参照すること。

[C++]

テクスチャ サーフェス オブジェクトを作成する場合は、まずデバイスのテクスチャ管理を有効する必要がある。テクスチャ管理属性を使用することで、複雑なテクスチャ管理が Direct3D 側で行われるようになる。

ハードウェア デバイスのテクスチャ管理は、次のコードで有効にできる。

    if( ddDesc.deviceGUID == IID_IDirect3DHALDevice )
        ddsd.ddsCaps.dwCaps2 = DDSCAPS2_TEXTUREMANAGE;
    else if( ddDesc.deviceGUID == IID_IDirect3DTnLHalDevice )
        ddsd.ddsCaps.dwCaps2 = DDSCAPS2_TEXTUREMANAGE;
    else
        ddsd.ddsCaps.dwCaps |= DDSCAPS_SYSTEMMEMORY;

テクスチャ管理の詳細については、「自動テクスチャ管理」を参照すること。

次に、ddDesc (レンダリング デバイスの記述を含む D3DDEVICEDESC7 構造体) を使用してデバイス能力を調べる。ドライバでの必要に応じて、サーフェス記述の幅と高さを調整する。

    if( ddDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_POW2 )
    {
        for( ddsd.dwWidth=1;  dwWidth>ddsd.dwWidth;   ddsd.dwWidth<<=1 );
        for( ddsd.dwHeight=1; dwHeight>ddsd.dwHeight; ddsd.dwHeight<<=1 );
    }
    if( ddDesc.dpcTriCaps.dwTextureCaps & D3DPTEXTURECAPS_SQUAREONLY )
    {
        if( ddsd.dwWidth > ddsd.dwHeight ) ddsd.dwHeight = ddsd.dwWidth;
        else                               ddsd.dwWidth  = ddsd.dwHeight;
    }

ここでは、テクスチャ管理を有効にし、サーフェス記述とドライバとの互換性を確認した。次は、テクスチャ フォーマットを列挙する。このタスクについては、「ステップ 1.4 : テクスチャ フォーマットを列挙する」で説明する。