XRViewport
Ограниченная доступность
Данная функция не относится к Baseline, так как она не работает в некоторых из наиболее широко используемых браузеров.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или во всех поддерживающих браузерах.
Интерфейс XRViewport API устройств WebXR предоставляет свойства, используемые для описания размера и положения текущего области просмотра внутри XRWebGLLayer, используемой для отрисовки 3D-сцены.
Свойства экземпляра
-
heightТолько для чтения -
Высота области просмотра в пикселях.
-
widthТолько для чтения -
Ширина области просмотра в пикселях.
-
xТолько для чтения -
Смещение от начала поверхности графического назначения (обычно
XRWebGLLayer) до левого края области просмотра в пикселях. -
yТолько для чтения -
Смещение от начала области просмотра до нижнего края области просмотра; система координат WebGL размещает (0, 0) в левом нижнем углу поверхности.
Примечания по использованию
В настоящее время единственный доступный тип поверхности — XRWebGLLayer. Точное расположение системы координат может варьироваться для других типов поверхностей, но в WebGL начало координат (0, 0) расположено в левом нижнем углу поверхности. Таким образом, значения, указанные в XRViewport, определяют прямоугольник, левый нижний угол которого находится в (x, y), и который простирается на width пикселей влево и на height пикселей вверх.
Эти значения можно напрямую передать в метод WebGLRenderingContext.viewport():
const xrViewport = xrWebGLLayer.getViewport(xrView); gl.viewport(xrViewport.x, xrViewport.y, xrViewport.width, xrViewport.height);
Пример
В этом примере настраивается обратный вызов кадра анимации с использованием requestAnimationFrame(). После начальной настройки он итерируется по каждому представлению в позе зрителя, настраивая область просмотра в соответствии с XRWebGLLayer.
xrSession.requestAnimationFrame((time, xrFrame) => {
const viewerPose = xrFrame.getViewerPose(xrReferenceSpace);
gl.bindFramebuffer(xrWebGLLayer.framebuffer);
for (const xrView of viewerPose.views) {
const xrViewport = xrWebGLLayer.getViewport(xrView);
gl.viewport(
xrViewport.x,
xrViewport.y,
xrViewport.width,
xrViewport.height,
);
// Now we can use WebGL to draw into a viewport matching
// the viewer's needs
}
});
Спецификации
| Спецификация |
|---|
| API устройств WebXR # xrviewport-interface |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
XRViewport |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
height |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
width |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
x |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
y |
79 | 79 | Нет | 66 | Нет | 79 | Нет | 57 | Нет | 11.2 | Нет |
© 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/XRViewport