リソースのロック (Direct3D 9)
リソースをロックすることは、そのストレージへの CPU アクセスを許可することを意味します。 リソースには、次のロック オプションが定義されています。
- D3DLOCK_DISCARD
- D3DLOCK_READONLY
- D3DLOCK_NOOVERWRITE
- D3DLOCK_NOSYSLOCK
- D3DLOCK_NO_DIRTY_UPDATE
ロック フラグとその特定のリソースとの関係の詳細については、個々のリソース ロック方法に関するリファレンス ページを参照してください。 アプリケーション開発者は、D3DLOCK_DISCARD、D3DLOCK_READONLY、およびD3DLOCK_NOOVERWRITEフラグのみがヒントであることに注意する必要があります。 実行時には、アプリケーションがこれらのフラグで指定された機能に従っていることをチェックしません。 D3DLOCK_READONLYを指定し、リソースに書き込むアプリケーションでは、未定義の結果が予想されます。 一般に、ロック使用フラグを含むロック フラグに対する処理は、以降のリリースでは動作することが保証されず、パフォーマンスが大幅に低下する可能性があります。
ロック操作の後にロック解除操作が続きます。 たとえば、テクスチャをロックした後、アプリケーションはロックされたテクスチャのロックを解除することで、ロックされたテクスチャへの直接アクセスを放棄します。 プロセッサへのアクセス権の付与に加えて、そのリソースに関連するその他の操作は、ロックの間シリアル化されます。 重複していないリージョンでも、リソースに対して 1 つのロックのみが許可され、そのサーフェスでロック操作が未処理である間は、サーフェスに対するアクセラレータ操作を継続できません。
各リソース インターフェイスには、含まれているバッファーをロックするためのメソッドがあります。 各テクスチャ リソースは、そのリソースのサブ部分をロックすることもできます。 2D リソース (サーフェス) ではサブ四角形のロックが可能で、ボリューム リソースではサブボリュームまたはボックスのロックが可能です。 各ロック メソッドは、リソースをバックアップするストレージへのポインターと、リソースの種類に応じて行またはデータプレーン間の距離を表す値を含む構造体を返します。 詳細については、リソース インターフェイスのメソッド リストを参照してください。 返されるポインターは常に、ロックされたサブ領域の左上のバイトを指します。
インデックス バッファーと頂点バッファーを使用する場合は、複数のロック呼び出しを行うことができます。ただし、ロック呼び出しの数がロック解除呼び出しの数と一致していることを確認する必要があります。
DXTn は、エンコードされた 4x4 ブロックにピクセルを格納し、4 x 4 の境界でのみロックできます。
関連トピック