XRWebGLBinding: getSubImage() 方法
XRWebGLBinding 介面的 getSubImage() 方法返回一個 XRWebGLSubImage 物件,該物件表示要渲染的 WebGL 紋理。
語法
js
getSubImage(layer, frame)
getSubImage(layer, frame, eye)
引數
layer-
用於渲染的
XRCompositionLayer(可以是除XRProjectionLayer之外的所有型別的XRCompositionLayer物件,有關渲染投影層的請參閱XRWebGLBinding.getViewSubImage())。 frame-
用於渲染的
XRFrame幀。 eye可選-
一個可選的
XRView.eye,指示要用於渲染的檢視的哪隻眼睛。可能的值
返回值
一個 XRWebGLSubImage 物件。
異常
如果滿足以下任一條件,則會丟擲 TypeError:
- 如果
layer不在 會話的layer陣列中。 - 如果
layer是一個XRProjectionLayer。 - 如果圖層的
layout屬性是default。 - 如果圖層的
layout屬性是stereo且eye是none。
示例
渲染 XRQuadLayer
以下示例渲染了一個 XRQuadLayer。
js
const xrGlBinding = new XRWebGLBinding(xrSession, gl);
const quadLayer = xrGlBinding.createQuadLayer({
space: xrReferenceSpace,
viewPixelWidth: 512,
viewPixelHeight: 512,
});
// Position 2 meters away from the origin with a width and height of 1.5 meters
quadLayer.transform = new XRRigidTransform({ z: -2 });
quadLayer.width = 1.5;
quadLayer.height = 1.5;
const framebuffer = gl.createFramebuffer();
xrSession.updateRenderState({ layers: [quadLayer] });
xrSession.requestAnimationFrame(onXRFrame);
function onXRFrame(time, xrFrame) {
xrSession.requestAnimationFrame(onXRFrame);
gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
let subImage = xrGlBinding.getSubImage(quadLayer, xrFrame);
gl.framebufferTexture2D(
gl.FRAMEBUFFER,
gl.COLOR_ATTACHMENT0,
subImage.colorTexture,
0,
);
let viewport = subImage.viewport;
gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
// Render content for the quad layer
}
規範
| 規範 |
|---|
| WebXR Layers API Level 1 # dom-xrwebglbinding-getsubimage |
瀏覽器相容性
載入中…