Platform SDK: DirectX

ステップ 1 : オフスクリーン サーフェスの作成

[Visual Basic]

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

[C++]

次のコードでは、DDEx3 の doInit サンプル関数を追加して、2 つのオフスクリーン バッファを作成する。

// オフスクリーン ビットマップを作成する。
ddsd.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH; 
ddsd.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN; 
ddsd.dwHeight = 480; 
ddsd.dwWidth = 640; 
ddrval = lpDD->CreateSurface(&ddsd, &lpDDSOne, NULL); 
if(ddrval != DD_OK) 
{ 
    return initFail(hwnd); 
} 
 
// 別のオフスクリーン ビットマップを作成する。
ddrval = lpDD->CreateSurface(&ddsd, &lpDDSTwo, NULL); 
if(ddrval != DD_OK) 
{ 
    return initFail(hwnd); 
} 
 

dwFlags メンバは、アプリケーションが DDSCAPS 構造体を使うことを指定して、バッファの高さと を設定する。サーフェスは、DDSCAPS_OFFSCREEN フラグが DDSCAPS 構造体に設定されることにより示されるように、オフスクリーン プレーン バッファとなる。高さと幅は、それぞれ 480 と 640 で DDSURFACEDESC2 構造体に設定される。サーフェスは、IDirectDraw7::CreateSurface メソッドを使って作成する。

オフスクリーン プレーン バッファは両方とも同じサイズなので、セカンド バッファを作成するためには、異なるポインタ名で IDirectDraw7::CreateSurface を再び呼び出せばよい。

また、DDSCAPS_SYSTEMMEMORY または DDSCAPS_VIDEOMEMORY のどちらかの能力を DDSCAPS 構造体に設定することにより、オフスクリーン バッファをシステム メモリまたはディスプレイ メモリに配置することを明示的に要求できる。ディスプレイ メモリにビットマップを保存することにより、オフスクリーン サーフェスバック バッファ間の転送速度を速めることができる。ビットマップ アニメーションを使う場合に、このことがより重要となる。ただし、オフスクリーン バッファに DDSCAPS_VIDEOMEMORY を指定して、ビットマップ全体を保持するためのディスプレイ メモリが不十分な場合にサーフェスを作成しようとすると、DDERR_OUTOFVIDEOMEMORY エラー値が返される。

次項 :ステップ 2 : オフスクリーン サーフェスへのビットマップのロード