XRWebGLBinding:createProjectionLayer() 方法

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

XRWebGLBinding 介面的 createProjectionLayer() 方法返回一個 XRProjectionLayer 物件,該物件是一個填充觀察者整個視口的圖層,並以接近裝置的本機幀率進行重新整理。

語法

js
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 擴充套件。

js
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

瀏覽器相容性

另見