Freigeben über


Verwalten von Geräte-Ressourcen

Dieser Dokumentation für die Vorschau nur ist und in späteren Versionen geändert. Leere Themen wurden als Platzhalter eingefügt.]

Es gibt zwei grundlegende Arten von Ressourcen im verwalteten mobile Direct3D programming: Die müssen neu erstellt werden, wenn ein Gerät zurückgesetzt wird und denen, die keine. Verschiedene Objekttypen können oder nicht mit Daten gefüllt werden können, wenn ein Gerät zurückgesetzt. Im Gegensatz zu Direct3D in Desktopcomputer-Anwendungen ist der Speicherpool für die Erstellung einer Ressource verwendet kein Faktor, ob eine Ressource wiederhergestellt werden muss, wenn ein Gerät zurückgesetzt wird.

Arbeitsspeicher-Pooling

Es sind drei Speicherpools in verwalteten mobile Direct3D-Programmiermodell verfügbar:

  • System

    Im normalen Systemspeicher auf dem mobilen Gerät i. d. r. mit langsamer als Videospeicher ist reserviert.

  • Video

    Ordnet einen Speicherbereich, die hauptsächlich von Videohardware auf dem mobilen Gerät verwendet. Auf einigen Geräten kann Videospeicher eine stark eingeschränkte Ressource sein.

  • Verwalteter Speicher

    Reserviert Videospeicher als Cache des Systemspeichers. Der Treiber kann mehreren Algorithmen, einschließlich des Algorithmus LRU (least recently verwendet) ersetzen, verwenden, um Zwischenspeichern Schema zu implementieren.

    Eine Struktur oder anderen Ressource in den verwalteten Pool erstellt wird, wird Speicherplatz im Systemspeicherpool für die Textur reserviert. Wenn die Struktur eine Texturstufe mit SetTexture-Methode zugewiesen wird, wird die Struktur in den Videospeicherpool hochgeladen und aufrechterhalten, bis es das Element am wenigsten verwendet wird und schließlich entfernt, wird um Platz für eine andere Ressource zu schaffen. Wenn Platz im Videospeicher vorgenommen werden, um eine verwaltete Oberfläche zu uploaden muss und kein Element die LRU-Definition erfüllt, der Treiber sollten mithilfe der Priority-Eigenschaft bestimmen, welche verwaltete Speicherressource aus dem Videospeicher zu entfernen.

    Sie können in den verwalteten Pool jedoch keine Vorder- und Rückseite Puffer, Tiefenpuffer und Bildoberflächen VertexBufferIndexBufferund Texture Ressourcen erstellen.

Sie können eine Instanz der Struktur SurfaceCaps verwenden, um festzustellen, welche Speicherpools zugänglich sind, beim Erstellen einer Ressource.

Ein mobiles Gerät kann verschiedene Speicherpools für unterschiedliche Arten von Ressourcen unterstützen. Bildschirmtreiber geben Ihre Unterstützung für den verwalteten Ressourcenpool mit der SupportsManagedPool -Eigenschaft ein SurfaceCaps. Wenn diese Eigenschaft trueist, unterstützt das Gerät den verwalteten Pool für VertexBufferIndexBufferund Texture Ressourcen. Eine Anwendung kann nicht aus dem verwalteten Pool eine Oberfläche erstellen, wenn der Treiber den verwalteten Pool nicht unterstützt. Wenn das Gerät im System und dem video Speicherpools für Texturen unterstützt, kann die Anwendung eine eigene Zwischenspeicherung Schema mithilfe der UpdateTexture-Methode implementieren.

Die Anwendung kann auch erzwingen, eine Oberfläche in den Videospeicher mit der PreLoad -Methode des ein Resource vorab geladen werden. Diese Methode führt die notwendigen Bytes verworfen werden und die Oberfläche sofort geladen werden.

Schließlich kann die Anwendung auch die Ressource verwaltet, um eine angegebene Anzahl von Bytes mit der ResourceManagerDiscardBytes -Methode des ein Device verwerfen erzwingen. Diese Methode akzeptiert die Anzahl von Bytes, die als Argument verworfen. Wenn die Anwendung 0 übergibt, werden alle verwalteten Bytes im Videospeicher verworfen.

Alle Methoden, die den Ressourcen-Manager steuern fungieren sofort;Sie sind nicht im Befehlspuffer gepuffert. Fehl, Sie auch, wenn das Gerät den verwalteten Pool nicht unterstützt.

Objekt-Instanzen und Lebensdauer

Wenn müssen verwalten Gerät zurückgesetzt und Indexpuffern oder Vertexpuffern verwenden, Sie die entsprechenden Konstruktoren verwenden, sodass Objekte mit der entsprechenden Lebensdauer erstellt werden.

Windows Mobile Direct3D unterstützt nur eine Device Instanz gleichzeitig auf einem Smartphone oder Pocket PC. Verwenden Sie die statische ReleaseD3DMobile -Methode der ein Manager um alle Ressourcen des Direct3D-Geräts zu entfernen, so dass Sie eine andere Windows Mobile Direct3D-Anwendung auf demselben Pocket PC oder Smartphone starten können.

Die folgenden Objekte müssen neu erstellt werden, wenn ein Device zurückgesetzt wird. Die Neuerstellung kann in einem Ereignishandler für das DeviceReset-Ereignis ausgeführt werden.

  • Texture Objekte.

  • Mesh Objekte.

  • Surface Objekte.

  • VertexBuffer -Objekte, die mit dem VertexBuffer(Device, Int32, Usage, VertexFormats, Pool)-Konstruktor erstellt wurden.

  • IndexBuffer -Objekte, die mit dem IndexBuffer(Device, Int32, Usage, Pool, Boolean)-Konstruktor erstellt wurden.

Die folgenden Objekte müssen nicht neu erstellt werden, wenn ein Device zurückgesetzt wird:

  • Font Objekte.

  • Sprite Objekte.

  • VertexBuffer Objekte mit VertexBuffer(Type, Int32, Device, Usage, VertexFormats, Pool)-Konstruktor erstellt.

  • IndexBuffer Objekte mit IndexBuffer(Type, Int32, Device, Usage, Pool)-Konstruktor erstellt.

Font und Sprite Objekte führen automatisch alle notwendigen Aktionen als Reaktion auf Gerät zurücksetzen.

Erstellen Sie die IndexBufferVertexBuffer Objekte und neu selbst automatisch Wenn ein Gerät zurückgesetzt, aber diese müssen nicht die darin enthaltenen Daten. Sie können einen Ereignishandler für das IndexBuffer.Created -Ereignis oder das VertexBuffer.Created-Ereignis den Index oder Scheitelpunkt Puffer mit Daten füllen, nachdem das Gerät zurückgesetzt wurde, definieren.

Siehe auch

Weitere Ressourcen

Mobile Direct3D-Programmierung in .NET Compact Framework