I have a fickering problem when i put .net frame (simple frame with opacity set to ex. 50%) over accelerated opengl context - simply when gl view is refreshed i get flickering of .net form
is there any way to get rid of this ? how should i swap buffers so .net could correctly work over gl layer ?
thanks for any help.
Transparent windows over HW accelerated 3D windows never worked right under Windows XP. Long story but the OS simply doesn’t handle that correctly.
Under Vista the compositor takes care of that and there this should work.
Though there are other OS bugs with transparency inside 3D windows under Vista. :sick:
Well - I get to the same point after my tests - i did not add but - exactly - problem apears on XP - Vista seems to work fine as i expected due to new drawing flow - at least with Aero enabled… in addition there is no problem with Direct3D (native or managed) and there is no problem with SW GL context - so microsoft is able to handle this “somehow” - the problem apears when i use/enable HW GL context…
Microsoft’s OpenGL rendering uses GDI functions to present the rendering, so it’s aware of what’s happening in respect to screen updates affecting transparent windows.
Probably the same for D3D because its Present() mechanism is known to the OS. (I’m not using D3D very often.)
But for HW OpenGL the GDI doesn’t know much about the screen update, and nothing about the back and stereo’s right buffers.
All that is greatly ignored by the OS. (Insert conspiracy theory here.) There is simply no way around that.
Under Vista Aero it knows all about the update mechanism, because all rendering goes through the final compositor and that is supposed to do transparency right.
Unless there are new OS bugs, search this thread http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=228674#Post228674
for the DwmEnableBlurBehindWindow() functionality which is broken inside the OS for HW OpenGL. :tired:
This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.