MFC框架下Opengl窗口闪屏问题解决方案

时间:2021-08-22 15:29:56

转自https://blog.csdn.net/niusiqiang/article/details/43116153

虽然启用了双缓冲,但是仍然会出闪屏的情况,这是由于OpenGL自己有刷新背景的函数glClear,故而应禁止Windows刷新窗口背景。否则,当窗口需要重画时,Windows会自动先发送WM_ERASEBKGND,而缺省的处理函数使用白色的背景刷。当OpenGL使用的背景颜色不是白色时,作图时有一帧白色的闪烁。这种现象在做动画时特别明显。

因此,网上所说的配置步骤还少了一部,应该在网上说的配置完成后,激活MFC程序中的WM_ERASEBKGND的消息处

理函数中禁止父窗口类的消息处理,简单的返回一个TRUE即可。原来返回的是return CView::OnEraseBkgnd(pDC),

现在应该把这个改成return TRUE,这样即可解决闪屏问题。