XRWebGLBinding: createProjectionLayer() 方法
createProjectionLayer()
是 XRWebGLBinding
接口的方法,它返回一个 XRProjectionLayer
对象,该对象是一个填充观察者整个视野并以接近设备原生帧率刷新的图层。
语法
createProjectionLayer(options)
参数
options
-
用于配置
XRProjectionLayer
的对象。textureType
可选-
一个字符串,定义图层将具有的纹理类型。可能的值
texture
-
XRWebGLSubImage
的纹理将是gl.TEXTURE_2D
类型。 texture-array
-
XRWebGLSubImage
的纹理将是gl.TEXTURE_2D_ARRAY
类型(仅限 WebGL 2 上下文)。默认值为texture
。
colorFormat
可选-
一个
GLenum
,定义颜色纹理数据的类型。可能的值gl.RGB
-
gl.RGBA
此外,对于启用了EXT_sRGB
扩展的上下文 ext.SRGB_EXT
-
ext.SRGB_ALPHA_EXT
此外,对于WebGL2RenderingContext
上下文 gl.RGBA8
gl.RGB8
gl.SRGB8
-
gl.RGB8_ALPHA8
默认值为gl.RGBA
。
depthFormat
可选-
一个
GLenum
,定义深度纹理数据的类型,或0
表示图层不应提供深度纹理。(在这种情况下,XRProjectionLayer.ignoreDepthValues
将为true
。)在启用了WEBGL_depth_texture
扩展的WebGLRenderingContext
上下文或WebGL2RenderingContext
上下文(不需要扩展)中可能的值gl.DEPTH_COMPONENT
-
gl.DEPTH_STENCIL
此外,对于WebGL2RenderingContext
上下文 gl.DEPTH_COMPONENT24
-
gl.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 图层 API 级别 1 # dom-xrwebglbinding-createprojectionlayer |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。