2016-05-18 33 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();