1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
// META: script=/resources/WebIDLParser.js
// META: script=/resources/idlharness.js
// META: timeout=long
'use strict';
// https://immersive-web.github.io/webxr/
idl_test(
['webxr'],
['permissions', 'webgl1', 'geometry', 'html', 'dom'],
async idl_array => {
idl_array.add_objects({
Navigator: ['navigator'],
XR: ['navigator.xr'],
// TODO: XRSystem
XRSession: ['xrSession'],
XRRenderState: ['xrRenderState'],
// TODO: XRFrame
// TODO: XRSpace
XRReferenceSpace: ['xrReferenceSpace'],
// TODO: XRBoundedReferenceSpace
// TODO: XRView
// TODO: XRViewport
XRRigidTransform: ['new XRRigidTransform()'],
// TODO: XRPose
// TODO: XRViewerPose
// TODO: XRInputSource
XRInputSourceArray: ['xrInputSourceArray'],
XRWebGLLayer: ['xrWebGLLayer'],
WebGLRenderingContextBase: ['webGLRenderingContextBase'],
XRSessionEvent: ['xrSessionEvent'],
// TODO: XRInputSourceEvent
XRInputSourcesChangeEvent: ['xrInputSourcesChangeEvent'],
// TODO: XRReferenceSpaceEvent
// TODO: XRPermissionStatus
});
self.xrSession = await navigator.xr.requestSession('inline');
self.xrRenderState = self.xrSession.renderState;
self.xrReferenceSpace = await self.xrSession.requestReferenceSpace('viewer');
self.xrInputSourceArray = self.xrSession.inputSources;
self.xrSessionEvent = new XRSessionEvent('end', {session: self.xrSession});
self.xrInputSourcesChangeEvent = new XRInputSourcesChangeEvent('inputsourceschange', {
session: self.xrSession,
added: [],
removed: [],
});
// XRWebGLRenderingContext is a typedef to either WebGLRenderingContext or WebGL2RenderingContext.
const canvas = document.createElement('canvas');
self.webGLRenderingContextBase = canvas.getContext('webgl');
self.xrWebGLLayer = new XRWebGLLayer(self.xrSession, self.webGLRenderingContextBase);
}
);
|