我有一个使用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的调用,但它似乎没有帮助。
我该如何强制重绘小部件?