diff options
author | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-09-23 17:40:27 +0200 |
---|---|---|
committer | Laszlo Agocs <laszlo.agocs@theqtcompany.com> | 2015-09-24 12:51:37 +0000 |
commit | b46ffbca0cfad41599873d4ca19dc79167c3955f (patch) | |
tree | e8176dee68e341de8efe82eb442ce883f7950957 /examples/opengl/hellogl2 | |
parent | bf2c9fd2fdff2760f3798fd1584f2da330266c46 (diff) |
Fix up QOpenGLWidget transparency support
The glColorMask call was troublesome. In addition, the Qt::WA_TranslucentBackground
was misinterpreted and recommended misleadingly in the documentation. The hellogl2
example's --transparent argument was disfunctional in practice.
Replace glColorMask with glBlendFuncSeparate. The hellogl2 example and the docs are
now corrected wrt enabling semi-transparency in a QOpenGLWidget that is not a top-level
(which is the most common case).
Task-number: QTBUG-47276
Change-Id: I6f40e732d455f5efcf158649ac9a52ff9f240e85
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'examples/opengl/hellogl2')
-rw-r--r-- | examples/opengl/hellogl2/glwidget.cpp | 7 | ||||
-rw-r--r-- | examples/opengl/hellogl2/main.cpp | 4 |
2 files changed, 9 insertions, 2 deletions
diff --git a/examples/opengl/hellogl2/glwidget.cpp b/examples/opengl/hellogl2/glwidget.cpp index 9738dcda20..6505ad3141 100644 --- a/examples/opengl/hellogl2/glwidget.cpp +++ b/examples/opengl/hellogl2/glwidget.cpp @@ -55,8 +55,11 @@ GLWidget::GLWidget(QWidget *parent) // --transparent causes the clear color to be transparent. Therefore, on systems that // support it, the widget will become transparent apart from the logo. m_transparent = QCoreApplication::arguments().contains(QStringLiteral("--transparent")); - if (m_transparent) - setAttribute(Qt::WA_TranslucentBackground); + if (m_transparent) { + QSurfaceFormat fmt = format(); + fmt.setAlphaBufferSize(8); + setFormat(fmt); + } } GLWidget::~GLWidget() diff --git a/examples/opengl/hellogl2/main.cpp b/examples/opengl/hellogl2/main.cpp index 4dc67f6e15..554e37e19b 100644 --- a/examples/opengl/hellogl2/main.cpp +++ b/examples/opengl/hellogl2/main.cpp @@ -59,6 +59,10 @@ int main(int argc, char *argv[]) QSurfaceFormat::setDefaultFormat(fmt); MainWindow mainWindow; + if (QCoreApplication::arguments().contains(QStringLiteral("--transparent"))) { + mainWindow.setAttribute(Qt::WA_TranslucentBackground); + mainWindow.setAttribute(Qt::WA_NoSystemBackground, false); + } mainWindow.resize(mainWindow.sizeHint()); int desktopArea = QApplication::desktop()->width() * QApplication::desktop()->height(); |