Platform SDK: DirectX

ステップ 2.3 : レンダリング サーフェスにコピーする

[Visual Basic]

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

[C++]

テクスチャ サーフェスにビットマップをコピーするには、ビットマップのデバイス コンテキスト (DC) およびサーフェスの DC を作成する。

注 :  DC はグラフィックス オブジェクトの属性を格納、取得、および修正する GDI 構造体であり、グラフィックス モードを指定する。サーフェスの DC には、レンダリング デバイスでのグラフィックス表示を制御する情報が収められる。ビットマップの DC に格納されるグラフィックス オブジェクトは、コピー用のビットマップである。

ビットマップの DC は、次のコードで取得できる。

    HDC hdcBitmap = CreateCompatibleDC( NULL );
    if( NULL == hdcBitmap )
    {
        pddsTexture->Release();
        return NULL;
    }
    SelectObject( hdcBitmap, hbm );

CreateCompatibleDC 関数は、指定されたデバイス (アプリケーションの現在のスクリーン設定) との互換性を持つメモリ DC を作成する GDI 関数である。詳細については、「プラットフォーム SDK」を参照すること。

次に、サーフェスの DC を取得する。

    HDC hdcTexture;
    if( SUCCEEDED( pddsTexture->GetDC( &hdcTexture ) ) )
    {

上記のコードでは、IDirectDrawSurface7::GetDC メソッドがサーフェスの DC を返す。

次のコードで、ビットマップ画像をサーフェスにコピーする。

        BitBlt( hdcTexture, 0, 0, bm.bmWidth, bm.bmHeight, hdcBitmap,
                0, 0, SRCCOPY );
        pddsTexture->ReleaseDC( hdcTexture );
    }
    DeleteDC( hdcBitmap );
 
    // 新しく作成されたテクスチャを返す。
    return pddsTexture;
}

BitBlt 関数は、指定された転送元 DC (hdcBitmap) から転送先 DC (hdcTexture) に色データのビット ブリットを行うグラフィックス デバイス インターフェイス (GDI) 関数である。詳細については、「プラットフォーム SDK」を参照すること。

ここでは、テクスチャに新しいサーフェスを作成した。次は、このテクスチャを使用してプリミティブのレンダリングを実行する。このタスクについては、「ステップ 3 : テクスチャ プリミティブのレンダリング」で説明する。