Microsoft DirectX 8.0 (C++)

サーフェス メモリへの直接アクセス

サーフェス メモリに直接アクセスするには、IDirect3DSurface8::LockRect メソッドを使う。このメソッドを呼び出す場合、pRect パラメータは、直接アクセスしようとするサーフェス上の矩形を記述する RECT 構造体へのポインタとする。サーフェス全体をロックするには、pRect を NULL に設定する。また、サーフェスの一部だけをカバーする RECT を指定することもできる。2 つの矩形が重ならなければ、2 つのスレッドまたは 2 つのプロセスは、サーフェスの複数の矩形を同時にロックすることができる。マルチサンプル バック バッファはロックできないことに注意すること。

LockRect メソッドは、サーフェス メモリに正しくアクセスするために必要となるすべての情報を、D3DLOCKED_RECT 構造体に格納する。この構造体には、ピッチに関する情報が含まれており、ロックされているビットへのポインタがある。サーフェス メモリへのアクセスが終了すると、IDirect3DSurface8::UnlockRect メソッドを呼び出して、ロックを解除する。

サーフェスをロックしている間、そのコンテンツを直接操作することができる。サーフェス メモリを直接レンダリングするときの一般的な問題を避けるためのヒントを、以下のリストで示す。