XRWebGLBinding:createCubeLayer() 方法
XRWebGLBinding 介面的 createCubeLayer() 方法返回一個 XRCubeLayer 物件,該物件是一個直接從 立方體貼圖 渲染並將立方體貼圖投影到立方體內面的圖層。
語法
js
createCubeLayer(init)
引數
init-
一個用於配置
XRCubeLayer的物件。它必須具有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擴充套件的上下文:- 該擴充套件支援的所有 格式。
depthFormat可選-
一個
GLenum,用於定義深度紋理資料的型別,或者0表示圖層不提供深度紋理。(在這種情況下,XRProjectionLayer.ignoreDepthValues將為true。)對於啟用了WEBGL_depth_texture擴充套件的WebGLRenderingContext上下文,或者對於WebGL2RenderingContext上下文(無需擴充套件),可能的值為gl.DEPTH_COMPONENT(預設)gl.DEPTH_STENCIL此外,對於WebGL2RenderingContext上下文:gl.DEPTH_COMPONENT24gl.DEPTH24_STENCIL24
isStatic可選-
一個布林值,如果為 true,則表示您只能在該圖層的
needsRedraw為true時進行繪製。預設值為false。 layout-
一個字串,指示圖層的佈局。可能的值:
default:圖層適應會話的所有檢視。mono:分配一個XRSubImage並將其呈現給雙眼。stereo:使用者代理決定如何分配XRSubImage(一個或兩個)以及佈局(上下或左右)。stereo-left-right:分配一個XRSubImage。左眼獲取紋理的左側區域,右眼獲取右側區域。stereo-top-bottom:分配一個XRSubImage。左眼獲取紋理的頂部區域,右眼獲取底部區域。預設值為mono。
mipLevels可選-
一個指定所需 mip 級別的數量。預設值為
1。 orientation可選-
一個
DOMPointReadOnly,指定相對於space屬性的方向。 space必需-
一個
XRSpace物件,定義了圖層與使用者物理環境的空間關係。 viewPixelHeight必需-
一個數字,指定圖層檢視的畫素高度。
viewPixelWidth必需-
一個數字,指定圖層檢視的畫素寬度。
返回值
一個 XRCubeLayer 物件。
示例
建立 XRCubeLayer
在呼叫 createCubeLayer() 時,使用上方列出的屬性配置立方體圖層。要將圖層呈現給 XR 裝置,請使用 XRSession.updateRenderState() 將其新增到 layers 渲染狀態中。
js
function onXRSessionStarted(xrSession) {
const glCanvas = document.createElement("canvas");
const gl = glCanvas.getContext("webgl2", { xrCompatible: true });
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const cubeLayer = xrGlBinding.createCubeLayer({
space: xrReferenceSpace,
viewPixelHeight: 512,
viewPixelWidth: 512,
});
xrSession.updateRenderState({
layers: [cubeLayer],
});
}
規範
| 規範 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createcubelayer |
瀏覽器相容性
載入中…