Platform SDK: DirectX |
フレーム バッファまたはオフスクリーン サーフェス メモリに直接アクセスするには、IDirectDrawSurface7::Lock メソッドを使う。このメソッドを呼び出す場合、lpDestRect パラメータは、直接アクセスしようとするサーフェス上の矩形を記述する RECT 構造体へのポインタとする。サーフェス全体をロックするには、lpDestRect を NULL に設定する。また、サーフェスの一部だけをカバーする RECT を指定することもできる。2 つの矩形が重ならなければ、2 つのスレッドまたは 2 つのプロセスは、サーフェスの複数の矩形を同時にロックすることができる。
Lock メソッドでは、サーフェス メモリに正しくアクセスするために必要となるすべての情報を、DDSURFACEDESC2 構造体に埋め込む。この構造体には、ピッチ (またはストライド) およびサーフェスのピクセル フォーマット (プライマリ サーフェス のピクセル フォーマットと異なる場合) に関する情報が含まれている。サーフェス メモリへのアクセスが終了すると、IDirectDrawSurface7::Unlock メソッドを呼び出して、ロックを解除する。
サーフェスをロックしている間、そのコンテンツを直接操作することができる。サーフェス メモリを直接レンダリングするときの一般的な問題を避けるためのヒントを、以下のリストで示す。
Lock メソッドの呼び出し時に DDLOCK_NOSYSLOCK フラグを含めない限り、通常はサーフェスをロックすると、DirectDraw は Win16Mutex を取得することになる。Win16Mutex の間、Windows を含むすべてのアプリケーションは実行を中止する。Win16Mutex がアプリケーションの実行を停止するので、ロック中は標準デバッガを使うことができない。ただし、カーネル デバッガはこの間も使用することができる。DirectDraw では、プライマリ サーフェスをロックする際は常に Win16Mutex を取得する。
IDirectDrawSurface7::Lock を呼び出したときにブリット中であれば、ロックを取得できないので、このメソッドは直ちにエラーを返す。このエラーを回避するには、ロックが成功して取得されるまでメソッドを待たせる DDLOCK_WAIT フラグを使う。
プライマリ サーフェスの部分ロックは、ソフトウェア カーソルの表示と衝突する。カーソルがロックされた矩形を横切る場合、カーソルはロックの継続時間の間隠される。カーソルが矩形を横切らない場合、ロックの継続時間の間固まる。サーフェス全体がロックされていると、これらのエフェクトのどちらも発生しない。
フレーム バッファまたはオフスクリーン サーフェス メモリに直接アクセスするには、DirectDrawSurface7.Lock メソッドを使う。このメソッドを呼び出す場合、r パラメータは、直接アクセスしようとするサーフェス上の矩形を記述する RECT 型とする。サーフェス全体をロックするには、空の RECT を渡す。また、サーフェスの一部だけをカバーする RECT を指定することもできる。
Lock メソッドでは、サーフェス メモリに正しくアクセスするために必要となるすべての情報を、DDSURFACEDESC2 型に埋め込む。この型には、ピッチ (またはストライド) およびサーフェスのピクセル フォーマット (プライマリ サーフェス のピクセル フォーマットと異なる場合) に関する情報が含まれている。サーフェス メモリへのアクセスが終了すると、DirectDrawSurface7.Unlock メソッドを呼び出して、ロックを解除する。
サーフェスをロックしている間、そのコンテンツを直接操作することができる。サーフェス メモリを直接レンダリングするときの一般的な問題を避けるためのヒントを、以下のリストで示す。
Lock メソッドの呼び出し時に DDLOCK_NOSYSLOCK フラグを含めない限り、通常はサーフェスをロックすると、DirectDraw は Win16Mutex を取得することになる。Win16Mutex の間、Windows を含むすべてのアプリケーションは実行を中止する。Win16Mutex がアプリケーションの実行を停止するので、ロック中は標準デバッガを使うことができない。ただし、カーネル デバッガはこの間も使用することができる。DirectDraw では、プライマリ サーフェスをロックする際は常に Win16Mutex を取得する。
DirectDrawSurface7.Lock を呼び出したときにブリット中であれば、ロックを取得できないので、このメソッドは直ちにエラーを返す。このエラーを回避するには、ロックが成功して取得されるまでメソッドを待たせる DDLOCK_WAIT フラグを使う。
プライマリ サーフェスの部分ロックは、ソフトウェア カーソルの表示と衝突する。カーソルがロックされた矩形を横切る場合、カーソルはロックの継続時間の間隠される。カーソルが矩形を横切らない場合、ロックの継続時間の間固まる。サーフェス全体がロックされていると、これらのエフェクトのどちらも発生しない。