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(); }