次の方法で共有


3. リソースのロック

3. リソースのロック

リソースのロックは、CPU による記憶領域へのアクセスを許可することを意味する。ロックの手順は、LockFlags 列挙の定数で定義する。しかし、これらのロック フラグは単なる示唆にすぎず、ランタイムは、アプリケーションがこれらのフラグに指定された機能に従っているかどうか確認しない。

アプリケーションが LockFlags.ReadOnly を指定したが、リソースに書き込みを行った場合、どのような結果になるかは定義されていない。一般に、ロック使用法フラグを含め、ロック フラグの設定に反した動作は後のリリースで動作するかどうか保証されておらず、パフォーマンスが大きく低下する原因となることがある。

ロック処理の後にロック解除処理が行われる。たとえば、テクスチャをロックした後、アプリケーションはロックを解除してロックされたテクスチャへの直接アクセスを放棄する。ロック期間中には、プロセッサのアクセスを許可すると共に、そのリソースに関連する他の処理はシリアル化される。オーバーラップしない領域の場合も含め、1 つのリソースには 1 つのロックしか設定できない。サーフェイスのロック処理が未処理である間、そのサーフェイスでのアクセラレータの処理は進行できない。

各リソース クラスは、内包するバッファをロックするメソッドを備えている。各テクスチャ リソースもそのリソースの一部をロックできる。2 次元リソース (サーフェイス) では部分矩形をロックでき、ボリューム リソースでは部分ボリュームまたはボックスをロックできる。各ロック メソッドは、リソースの種類に従ってデータの行または面の間の距離を表す値が入った System.Array を返す。返される配列は常にロックされた部分領域の左上バイトで始まる。

インデックス バッファと頂点バッファを使うときは、複数のロック呼び出しを行うことができる。ただし、ロック呼び出しの数はロック解除呼び出しの数に一致させる必要がある。

圧縮テクスチャ フォーマットの Microsoft® DirectX® Transform セット (エンコードされた 4 × 4 ブロックにピクセルを格納する) は 4 × 4 境界でのみロックできる。

© 2002 Microsoft Corporation. All rights reserved. Terms of use.