Win32-Acrylic-Effect icon indicating copy to clipboard operation
Win32-Acrylic-Effect copied to clipboard

Different render on different monitors at same computer

Open VISTALL opened this issue 4 years ago • 15 comments

I have 3 monitors

  • 1 - fullHD(horizontal)
  • 2 - 4k (main)(horizontal)
  • 3 - fullHD(vertical)

Results:

image

image

image

Also. At main monitor (2) - not focus background became black, but on 1/3 all ok.

Thanks

VISTALL avatar Oct 12 '21 14:10 VISTALL

Display Settings

image

(there different index and position of it - ignore)

VISTALL avatar Oct 12 '21 14:10 VISTALL

I think it's because when you switch between monitors the IDCompositionVisual size remains the same and your monitor uses a high resolution, I was not able to test this issue since I didn't have a multi monitor setup.

selastingeorge avatar Oct 12 '21 14:10 selastingeorge

I can test it from branch. I don't known this api :(

VISTALL avatar Oct 12 '21 14:10 VISTALL

its DWM private API, the API provides the IDCompositionVisual with a fixed size and i clip the visual during WM_WINDOWPOSCHANGED event with the WINDOWPOS struct values, Since there is no docs on this API it is very hard to debug. i think the background does not appear blurred in the first monitor because the IDCompositionVisual might not scale upto the resolution of the virtual monitor. The size of root visual is not set in the program it is set from the dwm private api so i am not sure about how to fix this

selastingeorge avatar Oct 12 '21 15:10 selastingeorge

3rd monitor is also fullHD, but it's blured as expected. But - background bad

VISTALL avatar Oct 12 '21 15:10 VISTALL

Are you just testing out the api or trying to use it a project. because as i mentioned in the README file, this is not suitable for production. I Suggest using Windows.UI.Composition.

selastingeorge avatar Oct 12 '21 15:10 selastingeorge

3rd monitor is also fullHD, but it's blured as expected. But - background bad

Not sure about how that happen, just try printing the size of rootvisual on to the console, if it is same as the Virtual Screen width may be i could fix it

selastingeorge avatar Oct 12 '21 15:10 selastingeorge

Testing :) I want understand, how do bluring via C++. I love aero, but win 10 introduce new bluring effects (acrylic) which not documented (except C# examples) =/

You made good work 👍🏻

VISTALL avatar Oct 12 '21 15:10 VISTALL

Testing :) I want understand, how do bluring via C++. I love aero, but win 10 introduce new bluring effects (acrylic) which not documented (except C# examples) =/

You made good work 👍🏻

Thank you, i am trying to bring back acrylic to wpf using windows.ui.composition but to overcome the airspace issue it's hard, the only way i see is by overlapping windows it works fine but i will lose all the windows animations like minimize, maximize etc.. Here is a demo : acrylic demo .NET 5.zip

selastingeorge avatar Oct 12 '21 15:10 selastingeorge

Nice demo) I want create same effect at my app (java app).

There some example at macOS

image

and want same for windows (for mac it's native impl too)

VISTALL avatar Oct 12 '21 15:10 VISTALL

Just research :)

VISTALL avatar Oct 12 '21 15:10 VISTALL

But Windows, Mac, Linux uses different technologies to blur the windows, it is completely depend upon the Compositor used by the OS. When a GUI Application is running the compositor receives the buffer containing the pixels to be rendered it is compositors duty to attach input to each Application, and render it into the screen. so different compositors uses different techniques for blurring and some does not even have an API. eg: Windows uses DWM as its Compositor, for Linux there are a lot like Sway (wlroots) etc..

selastingeorge avatar Oct 12 '21 16:10 selastingeorge

yeah:) it's just example

VISTALL avatar Oct 12 '21 16:10 VISTALL