2016-05-18 31 views
-1

我在窗口上使用Qt5.4.2,并试图实现一个QOpenGLWidget继承的窗口小部件。 窗口应该能够呈现透明和坚实,这意味着用户应该能够在程序中的两个渲染之间切换。QOpenglWidget透明度变化的黑色屏幕

当我用Depth_test启动程序时,它工作正常,当我启动程序时混合它也能正常工作。但是:当我更改执行中的透明度时,当我切换回depth_test时,出现黑色窗口!当我切换回混合这是正常的再次 因此,只是当我将透明度更改为depth_test时,问题发生。

我试着用旧的QGLWidget做同样的事情:Works完美无缺,所以没有黑色的窗口。

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: 我黑色的窗口,但是当我切换回透明度,我也有一半黑色窗口(对角线分隔)。

回答

0

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

doneCurrent(); makecurrent();