Пример #1
0
        private unsafe IVisual CreateBlurVisual(ICompositionBrush compositionBrush)
        {
            using var spriteVisual = _compositor.CreateSpriteVisual();
            using var visual       = spriteVisual.QueryInterface <IVisual>();
            using var visual2      = spriteVisual.QueryInterface <IVisual2>();


            spriteVisual.SetBrush(compositionBrush);
            visual.SetIsVisible(0);
            visual2.SetRelativeSizeAdjustment(new Vector2(1.0f, 1.0f));

            return(visual.CloneReference());
        }
        public WinUICompositorConnection(EglPlatformOpenGlInterface gl, object pumpLock)
        {
            _gl                       = gl;
            _pumpLock                 = pumpLock;
            _syncContext              = _gl.PrimaryEglContext;
            _angle                    = (AngleWin32EglDisplay)_gl.Display;
            _compositor               = NativeWinRTMethods.CreateInstance <ICompositor>("Windows.UI.Composition.Compositor");
            _compositor2              = _compositor.QueryInterface <ICompositor2>();
            _compositor5              = _compositor.QueryInterface <ICompositor5>();
            _compositorInterop        = _compositor.QueryInterface <ICompositorInterop>();
            _compositorDesktopInterop = _compositor.QueryInterface <ICompositorDesktopInterop>();
            using var device          = MicroComRuntime.CreateProxyFor <IUnknown>(_angle.GetDirect3DDevice(), true);

            _device    = _compositorInterop.CreateGraphicsDevice(device);
            _blurBrush = CreateBlurBrush();
        }