QtQuick2:将GLSL着色器/图形效果应用于Window元素?

时间:2014-04-22 07:22:38

标签: qt opengl shader qml qtquick2

我一直在使用QtQuick和QML测试GUI可能性,但我一直无法找到有关将GLSL着色器效果应用于Window本身的信息。例如,让我们说我想制作一个全屏应用程序,简单地模糊窗口后面的一切;当您在桌面上移动应用程序窗口时,窗口后面的所有内容都会受到着色器的影响,如果您最大化应用程序,整个屏幕都会受到影响。

在官方QtQuick5.2文档中,他们提到将shader effect应用于Image元素。为了做到这一点,他们制作了一个变体并使用id将其连接到Image。我已经尝试过提及' id'我' Window'的财产QML元素,但它不起作用(由于着色器无法正确处理,导致黑色窗口)。还有QtGraphicalEffects模块,它内置了一些非常好的效果,但我也没有把这些效果应用到窗口上。

所以,使用QtQuick2.2和QML,无论如何都要抓住'窗口后面的像素并使用GLSL着色器和/或QML图形效果属性处理它们?

1 个答案:

答案 0 :(得分:1)

有趣的任务,如果你想实际操作屏幕上没有出现的像素作为程序窗口的一部分,而是窗口后面的桌面的一部分?我能想到Qt的最佳方式来捕获"看起来在主窗口外面的像素实际上是通过使窗口的一部分透明来使它们成为Qt窗口的一部分。这可能需要一些试验和错误,但一个开始的地方是阅读this one之类的线程,其他人试图这样做。

成功完成后,您可以将着色器效果应用于窗口本身,它可能/应该影响其中捕获的像素。当然不是一项常见的任务,但通过一些实验,你可以获得一些有趣的结果。