XRWebGLBinding:createEquirectLayer() 方法
createEquirectLayer() 方法是 XRWebGLBinding 介面的一部分,它返回一個 XREquirectLayer 物件。該物件是一個圖層,用於將 等距柱狀投影 編碼的資料對映到球體的內部。
語法
createEquirectLayer(options)
引數
options-
一個用於配置
XREquirectLayer的物件。它必須包含space、viewPixelHeight和viewPixelWidth屬性。init具有以下屬性:centralHorizontalAngle可選-
一個數字,表示球體的中心水平角度(以弧度為單位)。預設值為
6.28318(2π)。 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。
isStatic可選-
一個布林值,如果為 true,則表示您只能在該圖層的
needsRedraw為true時進行繪製。預設值為false。 layout可選-
一個字串,指示圖層的佈局。可能的值:
default-
該圖層支援會話的所有檢視。
mono-
分配一個
XRSubImage物件,並將其呈現給雙眼。 stereo-
使用者代理決定如何分配
XRSubImage(一個或兩個)以及佈局(上下或左右)。 stereo-left-right-
分配一個
XRSubImage物件。左眼使用紋理的左側區域,右眼使用右側區域。 stereo-top-bottom-
分配一個
XRSubImage物件。左眼使用紋理的上側區域,右眼使用下側區域。預設值為mono。
lowerVerticalAngle可選-
一個數字,表示球體的較低垂直角度(以弧度為單位)。預設值為
-1.570795(-π/2)。 mipLevels可選-
一個數字,指定所需的 mip 級別數量。預設值為
1。 radius可選-
一個數字,表示球體的半徑。預設值為
0(無限球體)。 space必需-
一個
XRSpace物件,定義了圖層與使用者物理環境的空間關係。 textureType可選-
一個字串,定義了圖層的紋理型別。可能的值:
texture-
XRWebGLSubImage的紋理型別為gl.TEXTURE_2D。 texture-array-
XRWebGLSubImage的紋理型別為gl.TEXTURE_2D_ARRAY(僅限 WebGL 2 上下文)。預設值為texture。
transform可選-
一個
XRRigidTransform物件,定義了相對於space的偏移和方向。 upperVerticalAngle可選-
一個數字,表示球體的較高垂直角度(以弧度為單位)。預設值為
1.570795(π/2)。 viewPixelHeight必需-
一個數字,指定圖層檢視的畫素高度。
viewPixelWidth必需-
一個數字,指定圖層檢視的畫素寬度。
返回值
一個 XREquirectLayer 物件。
示例
建立 XREquirectLayer
使用上面列出的屬性配置等距柱狀圖層,並在呼叫 createEquirect() 時傳入。要將圖層呈現給 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 equirectLayer = xrGlBinding.createEquirectLayer({
space: xrReferenceSpace,
viewPixelWidth: 1200,
viewPixelHeight: 600,
centralHorizontalAngle: 2 * Math.PI,
upperVerticalAngle: Math.PI / 2.0,
lowerVerticalAngle: -Math.PI / 2.0,
radius: 0,
});
xrSession.updateRenderState({
layers: [equirectLayer],
});
}
規範
| 規範 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createequirectlayer |
瀏覽器相容性
載入中…