Kopieren von Depth-Stencil-Werten
Die Microsoft Direct3D-Runtime ruft die Blt-Funktion des Benutzermodusanzeigetreibers auf, um Tiefenschablonenwerte aus dem Videospeicher in den Systemspeicher zu kopieren oder umgekehrt. Der Treiber und die Hardware müssen Formatkonvertierungen von oder in alle vom Treiber unterstützten, undurchsichtigen Tiefenschablonenformate (d. h. alle formate, die vom D3DDDIFORMAT-Enumerationstyp mit Ausnahme von D3DDDIFMT_D*_LOCKABLE definiert werden) in oder aus einem der folgenden Formate durchführen:
D3DDDIFMT_D16_LOCKABLE
D3DDDIFMT_D32_LOCKABLE
D3DDDIFMT_D32F_LOCKABLE
D3DDDIFMT_S8_LOCKABLE
Der Treiber verwirft alle Kanäle (Tiefe oder Schablone), die im Quellformat vorhanden sind, aber nicht im Zielformat vorhanden sind. Die Laufzeit lässt das Kopieren zwischen Tiefenschablonenoberflächen, die keine gemeinsamen Kanaltypen verwenden, nicht zu.
Der Treiber konvertiert zunächst einen Quelltiefewert in einen 32-Bit-Ganzzahlwert ohne Vorzeichen und dann vom 32-Bit-Ganzzahlwert ohne Vorzeichen in die Zieldarstellung. Für beide Konvertierungen gelten die folgenden Regeln:
Wenn der Quelltiefewert ein Gleitkommawert ist, wird eine Klemmung auf [0,1] angewendet, und das Ergebnis wird mit _MAX_UINT multipliziert.
Wenn die Quelle integral ist und das Ziel eine ganze Zahl mit niedrigerer Genauigkeit ist, werden die zusätzlichen Bits mit der rechten Maustaste entfernt.
Wenn die Quelle integral ist und das Ziel eine ganze Zahl mit höherer Genauigkeit ist, werden die am weitesten rechts stehenden Bits aus den wichtigsten Bits auf der linken Seite repliziert.
Wenn die Quelle integral ist und das Ziel ein Gleitkommawert ist, wird die 32-Bit-Ganzzahl in einen Gleitkommawert konvertiert, und das Ergebnis wird durch _MAX_UINT geteilt.
Der Treiber ist nicht verpflichtet, nicht uniform verteilte Tiefenwerte speziell zu behandeln.
Der Treiber erweitert einen Quellschablonenwert auf eine 8-Bit-Ganzzahl (das heißt, der Treiber füllt den Quellschablonenwert mit Nullen auf der linken Seite). Wenn die Zieldarstellung eine niedrigere Genauigkeit verwendet, sollte der Treiber die wichtigsten Bits verwerfen, um die Konvertierung durchzuführen.
Anzeigetreiber im Benutzermodus müssen Tiefenschablonenkopien beliebiger Subrectangles unterstützen. Treiber müssen jedoch keine Spiegel-, Stretch- oder Farbschlüsselvorgänge bei Tiefenschablonenkopien ausführen. Bei Tiefenschablonenkopien ist das Punktsampling implizit erforderlich.