QOpenGLWidget:无法禁用混合(Qt5.10)

时间:2018-03-27 09:14:50

标签: c++ qt opengl qt5

我有一个使用QOpenGLWidget在Qt5.10中编写的应用程序。我使用原始的OpenGL调用来绘制小部件。

如果我有一些使用alpha< 1.0绘制的视口区域,则此区域不会重新绘制,而是看起来它是在窗口小部件的先前状态上绘制的。 当我在不同的Windows应用程序之间切换时,它会覆盖不同应用程序呈现的屏幕的先前内容。

我不会更改窗口小部件的默认更新行为。

我按如下方式设置默认的SurfaceFormat:

QSurfaceFormat surfaceFormat = QSurfaceFormat::defaultFormat();
surfaceFormat.setRedBufferSize(8);
surfaceFormat.setGreenBufferSize(8);
surfaceFormat.setBlueBufferSize(8);
surfaceFormat.setAlphaBufferSize(8);
surfaceFormat.setStencilBufferSize(8);
surfaceFormat.setDepthBufferSize(16);
surfaceFormat.setSamples(4);
surfaceFormat.setRenderableType(QSurfaceFormat::RenderableType::OpenGL);
surfaceFormat.setProfile(QSurfaceFormat::OpenGLContextProfile::CompatibilityProfile);
surfaceFormat.setSwapBehavior(QSurfaceFormat::DoubleBuffer);
QSurfaceFormat::setDefaultFormat(surfaceFormat);

我试图在代码中的随机位置添加对glClear和glInvalidateFramebuffer的调用,但它似乎没有帮助。

我该如何强制重绘小部件?

0 个答案:

没有答案