XRWebGLBinding: phương thức createEquirectLayer()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Phương thức createEquirectLayer() của giao diện XRWebGLBinding trả về đối tượng XREquirectLayer, là một lớp ánh xạ dữ liệu được mã hóa equirectangular lên bên trong của một hình cầu.
Cú pháp
createEquirectLayer(options)
Tham số
options-
Đối tượng để cấu hình
XREquirectLayer. Nó phải có các thuộc tínhspace,viewPixelHeightvàviewPixelWidth.initcó các thuộc tính sau:centralHorizontalAngleOptional-
Số cho biết góc ngang trung tâm tính bằng radian của hình cầu. Giá trị mặc định:
6.28318(2π). colorFormatOptional-
GLenumxác định kiểu dữ liệu của dữ liệu kết cấu màu. Các giá trị có thể:gl.RGBgl.RGBANgoài ra, cho các ngữ cảnh với phần mở rộngEXT_sRGBđược kích hoạt:ext.SRGB_EXText.SRGB_ALPHA_EXTNgoài ra, cho các ngữ cảnhWebGL2RenderingContext:gl.RGBA8gl.RGB8gl.SRGB8gl.RGB8_ALPHA8Ngoài ra, cho các ngữ cảnh với phần mở rộngWEBGL_compressed_texture_etcđược kích hoạt: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_EACNgoài ra, cho các ngữ cảnh với phần mở rộngWEBGL_compressed_texture_astcđược kích hoạt:Allcủa các định dạng mà phần mở rộng hỗ trợ. Giá trị mặc định làgl.RGBA.
depthFormatOptional-
GLenumxác định kiểu dữ liệu của dữ liệu kết cấu độ sâu, hoặc0để cho biết lớp không nên cung cấp kết cấu độ sâu (trong trường hợp đóXRProjectionLayer.ignoreDepthValuessẽ làtrue). Các giá trị có thể trong các ngữ cảnhWebGLRenderingContextcó phần mở rộngWEBGL_depth_textuređược kích hoạt, hoặc trong các ngữ cảnhWebGL2RenderingContext(không cần phần mở rộng):gl.DEPTH_COMPONENTgl.DEPTH_STENCILNgoài ra, cho các ngữ cảnhWebGL2RenderingContext:gl.DEPTH_COMPONENT24gl.DEPTH24_STENCIL24Giá trị mặc định làgl.DEPTH_COMPONENT.
isStaticOptional-
Giá trị boolean, nếu là true, cho biết bạn chỉ có thể vẽ vào lớp này khi
needsRedrawlàtrue. Giá trị mặc định làfalse. layoutOptional-
Chuỗi cho biết bố cục của lớp. Các giá trị có thể:
default-
Lớp chứa tất cả các khung nhìn của phiên.
mono-
Một
XRSubImageduy nhất được phân bổ và hiển thị cho cả hai mắt. stereo-
Tác nhân người dùng quyết định cách phân bổ
XRSubImage(một hoặc hai) và bố cục (trên/dưới hoặc trái/phải). stereo-left-right-
Một
XRSubImageduy nhất được phân bổ. Mắt trái nhận vùng bên trái của kết cấu, mắt phải nhận vùng bên phải. stereo-top-bottom-
Một
XRSubImageduy nhất được phân bổ. Mắt trái nhận vùng trên của kết cấu, mắt phải nhận vùng dưới. Giá trị mặc định làmono.
lowerVerticalAngleOptional-
Số cho biết góc dọc dưới tính bằng radian của hình cầu. Giá trị mặc định:
-1.570795(-π/2). mipLevelsOptional-
Số xác định số mức mip mong muốn. Giá trị mặc định là
1. radiusOptional-
Số cho biết bán kính của hình cầu. Giá trị mặc định:
0(hình cầu vô hạn). spaceBắt buộc-
Đối tượng
XRSpacexác định mối quan hệ không gian của lớp với môi trường vật lý của người dùng. textureTypeOptional-
Chuỗi xác định loại kết cấu mà lớp sẽ có. Các giá trị có thể:
texture-
Các kết cấu của
XRWebGLSubImagesẽ có kiểugl.TEXTURE_2D. texture-array-
Các kết cấu của
XRWebGLSubImagesẽ có kiểugl.TEXTURE_2D_ARRAY(chỉ dành cho ngữ cảnh WebGL 2). Giá trị mặc định làtexture.
transformOptional-
Đối tượng
XRRigidTransformxác định độ lệch và hướng tương đối vớispace. upperVerticalAngleOptional-
Số cho biết góc dọc trên tính bằng radian của hình cầu. Giá trị mặc định:
1.570795(π/2). viewPixelHeightBắt buộc-
Số xác định chiều cao pixel của khung nhìn lớp.
viewPixelWidthBắt buộc-
Số xác định chiều rộng pixel của khung nhìn lớp.
Giá trị trả về
Đối tượng XREquirectLayer.
Ví dụ
>Tạo một XREquirectLayer
Cấu hình lớp equirect bằng các thuộc tính được liệt kê ở trên trong lần gọi createEquirect(). Để hiển thị các lớp trên thiết bị XR, hãy thêm chúng vào trạng thái kết xuất layers bằng XRSession.updateRenderState().
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],
});
}
Thông số kỹ thuật
| Specification |
|---|
| WebXR Layers API Level 1> # dom-xrwebglbinding-createequirectlayer> |