XRWebGLLayer: свойство framebuffer
Ограниченная доступность
Эта функция не относится к Базовому уровню, так как не работает в некоторых из наиболее широко используемых браузеров.
Экспериментально: Это экспериментальная технология
Внимательно проверьте таблицу совместимости с браузерами перед использованием в продакшене.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Только для чтения XRWebGLLayer свойство framebuffer представляет собой невидимый WebGLFramebuffer, который используется для буферизации отрендеренного изображения, если используется XR композер. В противном случае, значение этого свойства null. Непрозрачный буфер кадров функционально практически идентичен стандартному буферу кадров WebGL, за исключением различий, описанных в разделе Как непрозрачные буферы кадров отличаются ниже.
Значение
Объект WebGLFramebuffer, представляющий буфер кадров, в который рендерится 3D сцена, или null, если XR композер отключён для сеанса.
Примечания по использованию
Как непрозрачные буферы кадров отличаются
Буфер кадров, представленный свойством framebuffer, является непрозрачным. В связи с этим его поведение отличается от стандартного контекста WebGL по нескольким параметрам. Эти различия заставляют непрозрачный буфер кадров вести себя больше как стандартный буфер кадров WebGL:
- Непрозрачные буферы кадров могут поддерживать антиалиасинг, даже в WebGL 1.0, что обычно не так.
- Прикрепления (буферы и т. п.) непрозрачных буферов кадров нельзя инспектировать или изменять. Вызов функций, таких как
framebufferTexture2D(),framebufferRenderbuffer(),deleteFramebuffer()илиgetFramebufferAttachmentParameter(), для непрозрачного буфера кадров приводит к ошибке WebGLINVALID_OPERATION(0x0502). - Непрозрачные буферы кадров считаются неполными и недоступны для рендеринга, кроме как во время выполнения обратного вызова
requestAnimationFrame(). Попытка очистки, рисования в или считывания из буфера кадров приводит к ошибке WebGLINVALID_FRAMEBUFFER_OPERATION(0x0506). ВызовcheckFramebufferStatus()в контексте WebGL извне обратного вызова анимационного кадра приводит к сообщению об ошибке WebGLFRAMEBUFFER_UNSUPPORTED(0x8CDD). - Непрозрачные буферы кадров, инициализированные со свойством
depthустановленным наfalse, не будут иметь буфера глубины и будут полагаться только на координаты для определения расстояния. - Непрозрачные буферы кадров, инициализированные без указания свойства
stencil, не будут иметь буфера трафарета. - Непрозрачные буферы кадров не будут иметь доступного альфа-канала, если свойство
alphaне установлено в значениеtrueпри создании слоя. - XR композер предполагает, что непрозрачные буферы кадров используют цвета с преумноженным альфа-каналом, независимо от того, установлено ли контекстное свойство WebGL
premultipliedAlpha.
Примечание: Свойства depth и stencil не обязательны для поддержки браузером, чтобы он считался имеющим полную поддержку WebGL.
Настройка по умолчанию нового буфера кадров
При создании нового XRWebGLLayer, его новый буфер кадров инициализируется так же, как и буфер кадров по умолчанию для любого интерфейса WebGL:
- Буфер цвета настроен со значением очистки (0, 0, 0, 0) (что означает прозрачный черный).
- Значение очистки буфера глубины — число 1.0.
- Буфер трафарета заполнен 0.
Примеры
В этом примере берётся XRWebGLLayer для сеанса, а затем его буфер кадров передаётся в функцию bindFramebuffer() контекста WebGL.
let glLayer = xrSession.renderState.baseLayer; gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
Спецификации
| Спецификация |
|---|
| API устройства WebXR # dom-xrwebgllayer-framebuffer |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
framebuffer |
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/XRWebGLLayer/framebuffer