XRWebGLBinding:createProjectionLayer() 方法
XRWebGLBinding 接口的 createProjectionLayer() 方法返回一个 XRProjectionLayer 对象,该对象是一个填充观察者整个视口的图层,并以接近设备的本机帧率进行刷新。
语法
createProjectionLayer(options)
参数
options-
一个用于配置
XRProjectionLayer的对象。textureType可选-
一个定义图层纹理类型的字符串。可能的值
texture-
XRWebGLSubImage的纹理类型为gl.TEXTURE_2D。 texture-array-
XRWebGLSubImage的纹理类型将是gl.TEXTURE_2D_ARRAY(仅限 WebGL 2 上下文)。默认值为texture。
colorFormat可选-
一个
GLenum,用于定义颜色纹理数据的类型。可能的值:gl.RGBgl.RGBA此外,对于启用了EXT_sRGB扩展的上下文:ext.SRGB_EXText.SRGB_ALPHA_EXT此外,对于WebGL2RenderingContext上下文:gl.RGBA8gl.RGB8gl.SRGB8gl.RGB8_ALPHA8默认值为gl.RGBA。
depthFormat可选-
一个
GLenum,定义深度纹理数据的类型,或者0表示图层不应提供深度纹理。(在这种情况下,XRProjectionLayer.ignoreDepthValues将为true。)可能的值在启用WEBGL_depth_texture扩展的WebGLRenderingContext上下文中,或者在WebGL2RenderingContext上下文中(无需扩展)gl.DEPTH_COMPONENTgl.DEPTH_STENCIL此外,对于WebGL2RenderingContext上下文:gl.DEPTH_COMPONENT24gl.DEPTH24_STENCIL24默认值为gl.DEPTH_COMPONENT。
scaleFactor可选-
一个浮点值,用于在复合期间缩放图层。值为
1.0表示帧缓冲区的默认像素大小。(另请参阅XRWebGLLayer.getNativeFramebufferScaleFactor()。)与其他图层不同,XRProjectionLayer无法使用显式的像素宽度和高度创建,因为其大小由硬件推断。(投影图层会填充观察者的整个视口。)
返回值
一个 XRProjectionLayer 对象。
示例
在 WebGL 2 上下文中创建一个 XRProjectionLayer
textureType 选项允许分配一个纹理数组,其中每个 XRView 都将渲染到数组的一个独立级别中。这允许进行一些渲染优化,例如使用 WebGL 2 上下文中可用的 OVR_multiview2 扩展。
function onXRSessionStarted(xrSession) {
const glCanvas = document.createElement("canvas");
const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const projectionLayer = xrGlBinding.createProjectionLayer({
textureType: "texture-array",
});
xrSession.updateRenderState({
layers: [projectionLayer],
});
}
规范
| 规范 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createprojectionlayer |
浏览器兼容性
加载中…