次の方法で共有


デバイスのリソースを管理します。

[このドキュメントはプレビュー版であり、後のリリースで変更されることがあります。 空白のトピックは、プレースホルダーとして挿入されています。]

リソースにマネージ モバイル Direct3D プログラミングの基本的な種類の 2 つがあります。デバイスがリセット再作成して、しません。 さまざまなオブジェクトの種類がまたは可能性がありますいないで塗りつぶされますデータ デバイスをリセットするとき。 デスクトップ コンピューターのアプリケーションで Direct3D と異なり、リソースの作成で使用されるメモリ プールはありません、デバイスがリセット リソースする必要があります作成されるかどうかの係数。

メモリ プール

次の 3 つのメモリ プール マネージ モバイル Direct3D プログラミングで利用可能なです。

  • システム

    通常のシステムのメモリが通常使用するより低くなってビデオ メモリ、モバイル デバイスに割り当てます。

  • モニター

    主にモバイル デバイス上のビデオ ハードウェアで使用するメモリ領域を割り当てます。 デバイスによっては、ビデオ メモリの場合、高い制限されたリソースがあります。

  • マネージ メモリ

    システム メモリのキャッシュとしてのビデオ メモリを割り当てます。 ドライバーは]、LRU (使用最近は、少なくとも) 交換のアルゴリズムを含め、いくつかのアルゴリズムを使用して、キャッシュ スキームを実装してください。

    テクスチャまたはその他のリソースがマネージ プール内で作成されると領域はテクスチャのシステム メモリ プールに割り当てられます。 SetTexture メソッドを使用するテクスチャ ステージに、テクスチャを割り当てる、テクスチャは、ビデオ メモリ プールにアップロードされ、最低に使用される項目になるし、他のリソースを確保する削除が最終的にされるまで保持が。 とき部屋がビデオ メモリ内に、マネージ、サーフェスをアップロードする作成す、項目が、LRU 定義を満たしてドライバーする必要があります、Priority プロパティを使って管理機能を決定メモリ リソースをビデオ メモリから削除します。

    VertexBuffer IndexBuffer Texture リソースは、マネージ プールですがいないフロントとバック バッファー、深度バッファー、およびイメージ サーフェス作成できます。

SurfaceCaps 構造体のインスタンスを使用できますするメモリ プールがアクセスできるリソースを作成するときに確認します。

モバイル デバイスは別のメモリ プールをさまざまな種類のリソースのサポートできます。 ディスプレイ ドライバーは、SupportsManagedPoolSurfaceCaps プロパティで、マネージ リソース プールのサポートを示します。 このプロパティが trueの場合デバイスが VertexBufferIndexBufferTexture リソースのためのマネージ プールをサポートします。 アプリケーション ドライバーは、マネージ プールをサポートしていない場合、マネージ プールからサーフェスを作成できません。 デバイスがテクスチャのビデオ メモリ プールとシステムの両方をサポート、する場合、アプリケーションが独自のメモリを UpdateTexture メソッドを使用して配色パターンをキャッシュ実装できます。

アプリケーションは、PreLoadResource メソッドでのビデオ メモリにプリロードするサーフェイスを強制的こともできます。 このメソッドは、必要なバイト破棄して、すぐに読み込まれるサーフェスをさせます。

最後に、アプリケーションも、ResourceManagerDiscardBytesDevice メソッドを使用、指定した数のバイトを破棄するマネージ リソースを強制的可能性があります。 このメソッドは、引数として破棄するバイト数を受け取ります。 場合は、アプリケーションが 0 を渡す、ビデオ メモリ内のすべてのマネージ バイトが破棄されます。

機能をすぐに、リソース マネージャーを制御するすべてのメソッドコマンド バッファーにバッファーされていません。 また、デバイスがマネージ プールをサポートしていない場合、失敗します。

オブジェクトのインスタンスと有効期間

ときインデックス バッファーまたは頂点バッファーを使用してデバイスのリセットを管理する、必ず使用して適切なコンストラクター オブジェクトは、適切な有効期間と作成ようにください。

Windows Mobile Direct3D では、Pocket PC または Smartphone では、一度に Device インスタンスを 1 つだけをサポートします。 同一の Pocket PC または Smartphone 上で別の Windows Mobile Direct3D アプリケーションを起動することができますので、すべて Direct3D デバイスのリソースを削除する、ReleaseD3DMobileManager 静的メソッドを使えます。

Device がリセット、次のオブジェクトする必要があります再作成します。 DeviceReset イベントのイベント ハンドラーでは、再作成を実行できます。

  • Texture オブジェクト。

  • Mesh オブジェクト。

  • Surface オブジェクト。

  • VertexBuffer コンストラクターで作成された VertexBuffer(Device, Int32, Usage, VertexFormats, Pool) オブジェクト。

  • IndexBuffer コンストラクターで作成された IndexBuffer(Device, Int32, Usage, Pool, Boolean) オブジェクト。

次のオブジェクトをする、Device がリセット再作成する必要はありません。

  • Font オブジェクト。

  • Sprite オブジェクト。

  • VertexBuffer コンストラクターで作成された VertexBuffer(Type, Int32, Device, Usage, VertexFormats, Pool) オブジェクト。

  • IndexBuffer コンストラクターで作成された IndexBuffer(Type, Int32, Device, Usage, Pool) オブジェクト。

FontSprite オブジェクトに自動的にすべての必要な操作に応じてを行うデバイスをリセットします。

再と IndexBufferVertexBuffer オブジェクト作成自体自動的に、デバイスがリセットが、内のデータがありません。 IndexBuffer.Created イベントまたはデバイスがリセット後、インデックスまたは頂点バッファー データで埋める VertexBuffer.Created イベントのイベント ハンドラーを定義できます。

参照

その他の技術情報

.NET Compact Framework でモバイル Direct3D プログラミング