GPURenderPassEncoder: setViewport()-Methode

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die setViewport()-Methode des GPURenderPassEncoder-Interfaces setzt das Viewport, das während der Rasterisierungsphase verwendet wird, um von normalisierten Gerätekoordinaten linear zu Viewport-Koordinaten zu mappen.

Syntax

js
setViewport(x, y, width, height, minDepth, maxDepth)

Parameter

x

Eine Zahl, die den minimalen X-Wert des Viewport in Pixeln darstellt.

y

Eine Zahl, die den minimalen Y-Wert des Viewport in Pixeln darstellt.

width

Eine Zahl, die die Breite des Viewport in Pixeln darstellt.

height

Eine Zahl, die die Höhe des Viewport in Pixeln darstellt.

minDepth

Eine Zahl, die den minimalen Tiefenwert des Viewport darstellt.

maxDepth

Eine Zahl, die den maximalen Tiefenwert des Viewport darstellt.

Hinweis: Wenn kein setViewport()-Aufruf erfolgt, sind die Standardwerte (0, 0, attachment width, attachment height, 0, 1) für jeden Render-Pass.

Rückgabewert

Keiner (Undefined).

Validierung

Die folgenden Kriterien müssen erfüllt sein, wenn setViewport() aufgerufen wird, sonst wird ein GPUValidationError erzeugt und der GPURenderPassEncoder wird ungültig:

  • x, y, width und height sind alle größer oder gleich 0.
  • x + width ist kleiner oder gleich der Breite der Render-Anhänge des Render-Passes (siehe Hinweis unten).
  • y + height ist kleiner oder gleich der Höhe der Render-Anhänge des Render-Passes (siehe Hinweis unten).
  • minDepth und maxDepth liegen beide im Bereich 0.0–1.0 inklusive.
  • minDepth ist kleiner als maxDepth.

Hinweis: Siehe die Farb- und Tiefen-/Stencilanhänge, die im Deskriptor von GPUCommandEncoder.beginRenderPass() angegeben sind; die Breite und Höhe basieren auf der des GPUTexture, von der ihre views stammen.

Beispiele

Einfacher Codeausschnitt

In einem typischen Canvas-Render könnte Folgendes verwendet werden, um die Breite und Höhe der gerenderten Grafiken zu halbieren:

js
passEncoder.setViewport(0, 0, canvas.width / 2, canvas.height / 2, 0, 1);

Im Kontext

Im WebGPU Samples reversedZ-Beispiel wird setViewport mehrmals verwendet, um das Viewport für die verschiedenen Render-Pässe einzustellen. Studieren Sie die Beispiel-Codeliste für den vollständigen Kontext.

Zum Beispiel:

js
// …

colorPass.setViewport(
  (canvas.width * m) / 2,
  0,
  canvas.width / 2,
  canvas.height,
  0,
  1,
);

// …

Spezifikationen

Specification
WebGPU
# dom-gpurenderpassencoder-setviewport

Browser-Kompatibilität

Siehe auch