Reverting to 19aade4 the UI of AAX and VST3 paint correctly… but fast forward to the latest develop commit and the UI flashes but then is black (size is correct). Standalone is fine.
Rail
reuk
August 26, 2024, 9:52pm
2
Are you using OpenGL in your plugin, or calling setCurrenRenderingEngine anywhere? From the linked post, it sounds like I may have broken OpenGL rendering on Windows in a recent commit, so I wonder whether the issue you’re seeing is related.
Rendering OpenGL subcomponents with Direct2D rendering disabled causes plugin windows to become completely transparent in some DAWs. When Direct2D rendering is enabled, certain elements on the OpenGL subcomponent such as text are not rendered. This issue is introduced by commit 340f531 and does not occur when the plugin editor is attached to an OpenGL context rather than a subcomponent.
Here are some images demonstrating the issue on Windows 11 with scaling set to 100%. These images were taken …
Actually, on Windows it looks like we did use OpenGL… will turn off the preprocessor flag and test.
Just tested 831c514 and it’s okay – will keep moving up the tree and let you know if I can find the commit which breaks it… or if it fixes itself
The shipping JUCE 7 based version is fine.
Rail
Turning off the OpenGL preprocessor flag fixes the GUI issue.
Rail
reuk
September 5, 2024, 12:23pm
5
Thanks for reporting. This issue should be resolved on the develop branch:
committed 11:14AM - 05 Sep 24 UTC
This fixes an issue introduced in
340f531c71ebc62979e8c5ae9f18df26bf43a2d8 where… embedded OpenGL windows
would incorrectly have the WS_EX_LAYERED style bit set, which in turn
prevented them from displaying correctly.
Before the window-transparency refactoring, OpenGL windows would not
have the layered bit set because only peers with windowIsSemiTransparent
were created with the layered bit, and the layered bit was only updated
if the peer alpha was changed.
The new behaviour is to always set WS_EX_LAYERED if the peer's component
is non-opaque with no titlebar, or if the component has an alpha < 1.0f.
The OpenGLContext's placeholder component has no titlebar, so it must be
opaque in order to avoid setting the layered style bit.