GPURenderPassEncoder: метод setViewport()
Ограниченное использование
Эта функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Экспериментальная функция: Это экспериментальная технология.
Перед использованием в продакшене тщательно проверьте таблицу совместимости браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Метод setViewport() интерфейса GPURenderPassEncoder устанавливает область просмотра, используемую на стадии растрирования, для линейного отображения от нормализованных координат устройства до координат области просмотра.
Синтаксис
setViewport(x, y, width, height, minDepth, maxDepth)
Параметры
x-
Число, представляющее минимальное значение X области просмотра в пикселях.
y-
Число, представляющее минимальное значение Y области просмотра в пикселях.
width-
Число, представляющее ширину области просмотра в пикселях.
height-
Число, представляющее высоту области просмотра в пикселях.
minDepth-
Число, представляющее минимальное значение глубины области просмотра.
maxDepth-
Число, представляющее максимальное значение глубины области просмотра.
Примечание: Если вызов setViewport() не выполнен, для каждого прохода рендеринга используются значения по умолчанию (0, 0, attachment width, attachment height, 0, 1).
Возвращаемое значение
None (Undefined).
Валидация
При вызове setViewport() должны быть соблюдены следующие критерии; в противном случае генерируется ошибка GPUValidationError, и GPURenderPassEncoder становится недействительным:
-
x,y,width, иheightдолжны быть больше или равны 0. -
x+widthдолжно быть меньше или равно ширине прикреплений рендеринга прохода рендеринга (см. примечание ниже). -
y+heightдолжно быть меньше или равно высоте прикреплений рендеринга прохода рендеринга (см. примечание ниже). -
minDepthиmaxDepthдолжны находиться в диапазоне от 0,0 до 1,0 включительно. -
minDepthдолжно быть меньшеmaxDepth.
Примечание: Обратите внимание на цвет и глубину/маску, указанные в описателе GPUCommandEncoder.beginRenderPass(); ширина и высота основаны на ширине и высоте GPUTexture, из которых происходят их view.
Примеры
Базовый пример
В типичном рендеринге на холсте можно использовать следующий код, чтобы уменьшить ширину и высоту рендерируемой графики вдвое:
passEncoder.setViewport(0, 0, canvas.width / 2, canvas.height / 2, 0, 1);
В контексте
В примере WebGPU Samples reversedZ, setViewport используется несколько раз для установки области просмотра для разных проходов рендеринга. Изучите пример кода для полного контекста.
Например:
// ... colorPass.setViewport( (canvas.width * m) / 2, 0, canvas.width / 2, canvas.height, 0, 1, ); // ...
Спецификации
| Спецификация |
|---|
| WebGPU # dom-gpurenderpassencoder-setviewport |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Хром | Эдж | Фаерфокс | Опера | Сафари | Хром Android | Фаерфокс для Android | Опера Android | Сафари на iOS | Samsung Internet | WebView Android | |
setViewport |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
113В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Предварительная версияВ настоящее время поддерживается только на Linux и Windows. |
99В настоящее время поддерживается только на ChromeOS, macOS и Windows. |
Предварительная версия | 121 | Нет | 81 | Нет | 25.0 | 121 |
См. также
- API WebGPU
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/GPURenderPassEncoder/setViewport