我在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时: 我有黑色的窗口,但是当我切换回透明度时,我也得到了一半黑色的窗口(对角线分开)。
答案 0 :(得分:0)
确定, 最后我得到了答案。 在开始时我应该写:
doneCurrent();
makecurrent();