1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- import { WebXRLayerWrapper } from "../webXRLayerWrapper.js";
- import { WebXRLayerRenderTargetTextureProvider } from "../webXRRenderTargetTextureProvider.js";
- /**
- * Wraps XRWebGLLayer's created by Babylon Native.
- * @internal
- */
- export class NativeXRLayerWrapper extends WebXRLayerWrapper {
- constructor(layer) {
- super(() => layer.framebufferWidth, () => layer.framebufferHeight, layer, "XRWebGLLayer", (sessionManager) => new NativeXRLayerRenderTargetTextureProvider(sessionManager, this));
- this.layer = layer;
- }
- }
- /**
- * Provides render target textures for layers created by Babylon Native.
- * @internal
- */
- export class NativeXRLayerRenderTargetTextureProvider extends WebXRLayerRenderTargetTextureProvider {
- constructor(sessionManager, layerWrapper) {
- super(sessionManager.scene, layerWrapper);
- this.layerWrapper = layerWrapper;
- this._nativeRTTProvider = navigator.xr.getNativeRenderTargetProvider(sessionManager.session, this._createRenderTargetTexture.bind(this), this._destroyRenderTargetTexture.bind(this));
- this._nativeLayer = layerWrapper.layer;
- }
- trySetViewportForView(viewport) {
- viewport.x = 0;
- viewport.y = 0;
- viewport.width = 1;
- viewport.height = 1;
- return true;
- }
- getRenderTargetTextureForEye(eye) {
- // TODO (rgerd): Update the contract on the BabylonNative side to call this "getRenderTargetTextureForEye"
- return this._nativeRTTProvider.getRenderTargetForEye(eye);
- }
- getRenderTargetTextureForView(view) {
- return this._nativeRTTProvider.getRenderTargetForEye(view.eye);
- }
- getFramebufferDimensions() {
- return {
- framebufferWidth: this._nativeLayer.framebufferWidth,
- framebufferHeight: this._nativeLayer.framebufferHeight,
- };
- }
- }
- /**
- * Creates the xr layer that will be used as the xr session's base layer.
- * @internal
- */
- export class NativeXRRenderTarget {
- constructor(_xrSessionManager) {
- this._nativeRenderTarget = navigator.xr.getWebXRRenderTarget(_xrSessionManager.scene.getEngine());
- }
- async initializeXRLayerAsync(xrSession) {
- await this._nativeRenderTarget.initializeXRLayerAsync(xrSession);
- this.xrLayer = this._nativeRenderTarget.xrLayer;
- return this.xrLayer;
- }
- dispose() {
- /* empty */
- }
- }
- //# sourceMappingURL=nativeXRRenderTarget.js.map
|