关于透明度变化的QOpenglWidget黑屏

时间:2016-05-18 16:56:09

标签: qt opengl opengl-3

我在Windows上使用Qt5.4.2,我正在尝试实现一个QOpenGLWidget继承的小部件。 窗口应该能够以透明和稳定的方式呈现,这意味着用户应该能够在程序中的两个渲染之间切换。

当我使用Depth_test启动程序时,它工作正常,当我使用混合启动程序时,它工作正常。但是:当我改变执行中的透明度时,当我切换回depth_test时,我得到了黑色窗口!当我切换回混合时再次正常 所以当我将透明度更改为depth_test时就会出现问题。

我用旧的QGLWidget做了同样的事情:工作完美无瑕,所以没有黑色的窗口。

if (/transparent or not/)
{

    glDisable(GL_DEPTH_TEST);

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);


} else
{
    glDisable(GL_BLEND);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);


}update();

还有以下内容:当我启用GL_CULL_FACE时:  我有黑色的窗口,但是当我切换回透明度时,我也得到了一半黑色的窗口(对角线分开)。

1 个答案:

答案 0 :(得分:0)

确定, 最后我得到了答案。 在开始时我应该写:

doneCurrent(); makecurrent();