Platform SDK: DirectX |
ここでは、C および C++ でのアプリケーション開発について説明する。Visual Basic については、「DirectDraw Visual Basic チュートリアル」を参照すること。
WM_TIMER メッセージには、サーフェスとフリッピング サーフェスへの書き込みに対するコードがある。DDEx3 の場合、次のようなコードがあり、適当なオフスクリーン サーフェスを選択してバック バッファに転送する。
rcRect.left = 0; rcRect.top = 0; rcRect.right = 640; rcRect.bottom = 480; if(phase) { pdds = lpDDSTwo; phase = 0; } else { pdds = lpDDSOne; phase = 1; } while(1) { ddrval = lpDDSBack->BltFast(0, 0, pdds, &rcRect, FALSE); if(ddrval == DD_OK) { break; } }
phase 変数では、バック バッファにブリットされるオフスクリーン サーフェスを決定する。そして、IDirectDrawSurface7::BltFast メソッドを呼び出して、選択されたオフスクリーン サーフェスは左上角の始点 (0,0) からバック バッファにブリットする。rcRect パラメータは RECT 構造体のポインタであり、ブリットされるオフスクリーン サーフェスの左上角と右下角を定義する。最後のパラメータは FALSE (または 0) に設定し、特別な転送フラグを使わないことを示す。
アプリケーションの要求により、IDirectDrawSurface7::Blt メソッドまたは IDirectDrawSurface7::BltFast メソッドのどちらかを使い、オフスクリーン バッファからブリットする。ディスプレイ メモリにあるオフスクリーン プレーン バッファからブリットを実行する場合は、IDirectDrawSurface7::BltFast を使うようにする。ディスプレイ アダプタ上のハードウェア ブリットを使うシステムでは速度を早くできない。しかし、ブリットの実行にハードウェア エミュレーションを使うシステムでは、10 パーセント程度早くなる。このため、ディスプレイ メモリからディスプレイ メモリへのブリットするすべてのディスプレイ処理において、IDirectDrawSurface7::BltFast を使うべきである。ただし、システム メモリからブリットしたり、特別なハードウェア フラグを必要とする場合は、IDirectDrawSurface7::Blt を使用しなくてはならない。
オフスクリーン サーフェスをバック バッファにロードした後、バック バッファとプライマリ サーフェスは、上述のチュートリアルで示した方法とほぼ同様にフリップされる。