XRWebGLBinding: createCylinderLayer() 方法
createCylinderLayer() 方法是 XRWebGLBinding 介面的一個方法,它返回一個 XRCylinderLayer 物件。這個物件代表虛擬環境中一個彎曲的矩形空間圖層。
語法
createCylinderLayer(init)
引數
init-
用於配置
XRCylinderLayer的一個物件。它必須包含space、viewPixelHeight和viewPixelWidth屬性。init包含以下屬性:aspectRatio可選-
一個數字,表示可見圓柱體部分的比例。它是可見圓柱體部分寬度除以其高度的比例。寬度透過將
radius乘以centralAngle來計算。預設值為2.0。 centralAngle可選-
一個數字,表示圓柱體可見部分的弧度。預設值:
0.78539(π / 4)。 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。
mipLevels可選-
一個數字,指定所需的 mip 級別數量。預設值為
1。 radius可選-
一個數字,表示圓柱體的半徑。預設值:
2.0。 space必需-
一個
XRSpace物件,定義了圖層與使用者物理環境的空間關係。 textureType可選-
一個字串,定義了圖層的紋理型別。可能的值:
texture:XRWebGLSubImage的紋理型別為gl.TEXTURE_2D。texture-array:XRWebGLSubImage的紋理型別為gl.TEXTURE_2D_ARRAY(僅限 WebGL 2 上下文)。預設值為texture。
transform可選-
一個
XRRigidTransform物件,定義了相對於space的偏移和方向。 viewPixelHeight必需-
一個數字,指定圖層檢視的畫素高度。
viewPixelWidth必需-
一個數字,指定圖層檢視的畫素寬度。
返回值
一個 XRCylinderLayer 物件。
示例
建立 XRCylinderLayer
使用上面列出的屬性配置圓柱體圖層,並在呼叫 createCylinderLayer() 時傳入。要將圖層呈現給 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 cylinderLayer = xrGlBinding.createCylinderLayer({
space: xrReferenceSpace,
viewPixelWidth: 1200,
viewPixelHeight: 600,
centralAngle: (60 * Math.PI) / 180,
aspectRatio: 2,
radius: 2,
transform: new XRRigidTransform(/* … */),
});
xrSession.updateRenderState({
layers: [cylinderLayer],
});
}
規範
| 規範 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-createcylinderlayer |
瀏覽器相容性
載入中…