XRWebGLBinding: createQuadLayer() 方法
XRWebGLBinding 介面的 createQuadLayer() 方法返回一個 XRQuadLayer 物件,該物件是一個在虛擬環境中佔據平坦矩形空間的圖層。
語法
createQuadLayer(options)
引數
options-
一個用於配置
XRQuadLayer的物件。它必須具有space、viewPixelHeight和viewPixelWidth屬性。init具有以下屬性:colorFormat可選-
一個
GLenum,用於定義顏色紋理資料的型別。可能的值:gl.RGBgl.RGBA此外,對於啟用了EXT_sRGB擴充套件的上下文:ext.SRGB_EXText.SRGB_ALPHA_EXT此外,對於WebGL2RenderingContext上下文:gl.RGBA8gl.RGB8gl.SRGB8gl.RGB8_ALPHA8此外,對於啟用了WEBGL_compressed_texture_etc擴充套件的上下文:ext.COMPRESSED_RGB8_ETC2ext.COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_RGBA8_ETC2_EACext.COMPRESSED_SRGB8_ETC2ext.COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2ext.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC此外,對於啟用了WEBGL_compressed_texture_astc擴充套件的上下文:- 擴充套件支援的所有格式。預設值為
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。
height可選-
一個指定圖層高度(以米為單位)的數字。預設值為
1.0。 isStatic可選-
一個布林值,如果為 true,則表示您只能在該圖層的
needsRedraw為true時進行繪製。預設值為false。 layout可選-
一個字串,指示圖層的佈局。可能的值:
default-
該圖層支援會話的所有檢視。
mono-
分配一個
XRSubImage物件,並將其呈現給雙眼。 stereo-
使用者代理決定如何分配
XRSubImage(一個或兩個)以及佈局(上下或左右)。 stereo-left-right-
分配一個
XRSubImage物件。左眼使用紋理的左側區域,右眼使用右側區域。 stereo-top-bottom-
分配一個
XRSubImage物件。左眼使用紋理的上側區域,右眼使用下側區域。預設值為mono。
mipLevels可選-
一個數字,指定所需的 mip 級別數量。預設值為
1。 space必需-
一個
XRSpace物件,定義了圖層與使用者物理環境的空間關係。 textureType可選-
一個字串,定義了圖層的紋理型別。可能的值:
texture-
XRWebGLSubImage的紋理型別為gl.TEXTURE_2D。 texture-array-
XRQuadLayer的紋理將是gl.TEXTURE_2D_ARRAY型別(僅限 WebGL 2 上下文)。預設值為texture。
transform可選-
一個
XRRigidTransform物件,定義了相對於space的偏移和方向。 viewPixelHeight必需-
一個數字,指定圖層檢視的畫素高度。
viewPixelWidth必需-
一個數字,指定圖層檢視的畫素寬度。
width可選-
一個指定圖層寬度(以米為單位)的數字。預設值為
1.0。
返回值
一個 XRQuadLayer 物件。
示例
建立 XRQuadLayer
在呼叫 createQuadLayer() 中使用上面列出的屬性配置四邊形圖層。要將圖層呈現給 XR 裝置,請使用 XRSession.updateRenderState() 將它們新增到 layers 渲染狀態中。
function onXRSessionStarted(xrSession) {
const glCanvas = document.createElement("canvas");
const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const quadLayer = xrGlBinding.createQuadLayer({
space: xrReferenceSpace,
viewPixelHeight: 512,
viewPixelWidth: 512,
transform: new XRRigidTransform({ z: -2 }),
});
xrSession.updateRenderState({
layers: [quadLayer],
});
}
規範
| 規範 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createquadlayer |
瀏覽器相容性
載入中…