安全上下文
此特征只可用于
安全上下文
(HTTPS),在某些或所有
支持浏览器
.
XRView
interface's read-only
eye
property is a string taken from the
XREye
enumerated type, indicating which eye's viewpoint the
XRView
represents:
left
or
right
. For views which represent neither eye, such as monoscopic views, this property's value is
none
.
let eye = xrView.eye;
A
DOMString
whose value is one of the strings enumerated by the
XREye
类型:
left
XRView
represents the point-of-view of the viewer's left eye.
right
The view represents the viewer's right eye.
none
XRView
describes a monoscopic view, or the view otherwise doesn't represent a particular eye's point-of-view.
The primary purpose of this property is to allow the correct area of any pre-rendered stereo content to be presented to the correct eye. For dynamically-rendered 3D content, you can usually ignore this and simply render each of the viewer's views, one after another.
This code, from the viewer pose's renderer, iterates over the pose's views and renders them.
However
, we have flags which, if
true
, indicate that a particular eye has been injured during gameplay. When rendering that eye, if the flag is
true
, that view is skipped instead of being rendered.
glLayer = xrSession.renderState.baseLayer;
gl.bindFramebuffer(gl.FRAMEBUFFER, glLayer.framebuffer);
gl.clearColor(0,0, 0, 1.0);
gl.clearDepth(1.0);
gl.clear(gl.COLOR_BUFFER_BIT, gl.DEPTH_BUFFER_BIT);
for (let view of xrPose.views) {
let skipView = false;
if (view.eye == "left" && body.leftEye.injured) ||
skipView = updateInjury(body.leftEye);
} else if (view.eye == "right" && body.rightEye.injured) {
skipView = updateInjury(body.rightEye);
}
if (!skipView) {
let viewport = glLayer.getViewport(view);
gl.viewport(viewport.x, viewport.y, viewport.width, viewport.height);
renderScene(gl, view);
}
}
For each of the views, the value of
eye
is checked and if it's either
left
or
right
, we check to see if the
body.leftEye.injured
or
body.rightEye.injured
特性为
true
; if so, we call a function
updateInjury()
on that eye to do things such as allow a bit of healing to occur, track the progress of a poison effect, or the like, as appropriate for the game's needs.
updateInjury()
返回
true
if the eye is still injured or
false
if the eye has been restored to health by the function,. If the result is
false
, indicating that the eye is now healthy, we render the scene for that eye. Otherwise, we don't.
| 规范 | 状态 | 注释 |
|---|---|---|
|
WebXR 设备 API
The definition of 'XRView.eye' in that specification. |
工作草案 | 初始定义。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
eye
|
Chrome 79 | Edge 79 | Firefox 不支持 No | IE 不支持 No | Opera 不支持 No | Safari 不支持 No | WebView Android 不支持 No | Chrome Android 79 | Firefox Android 不支持 No | Opera Android 不支持 No | Safari iOS 不支持 No | Samsung Internet Android 11.2 |
完整支持
不支持
XRView
Navigator.xr
WebGLRenderingContext.makeXRCompatible()
XR
XRBoundedReferenceSpace
XRFrame
XRInputSource
XRInputSourceArray
XRInputSourceEvent
XRInputSourcesChangeEvent
XRPose
XRReferenceSpace
XRReferenceSpaceEvent
XRRenderState
XRRigidTransform
XRSession
XRSessionEvent
XRSpace
XRViewerPose
XRViewport
XRWebGLLayer