基于MFC的opengl编程(解决拖动窗口抖动问题)
2009-12-24 23:14
573 查看
看了这篇博文
http://www.cnblogs.com/phinecos/archive/2007/07/28/834916.html
发现拖动窗口时候有白条(抖动).
再看
http://www.cnblogs.com/phinecos/archive/2008/11/04/1326687.html
其中说到:
8
,试试改变窗口的大小,你会看到很严重的闪烁,并且关闭程序后会报告内存泄露,因此我们这就来解决这两个问题吧。
发生闪烁的原因是
Windows
先绘制背景,然后再是
OpenGL
绘制,因为我们已经让
OpenGL
负责清空背景色,因此我们不需要
Windows
去清空背景了
BOOL CCY457OpenGLView::OnEraseBkgnd(CDC
*
pDC)
{
//
Tell Windows not to erase the background
return
TRUE;
}
于是添加WM_ERASEBKGND消息处理,然后注意的地方是
1.像素格式
PIXELFORMATDESCRIPTOR pixelDesc =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER |PFD_STEREO_DONTCARE
, //不能同时使用 PFD_SUPPORT_GDI
PFD_TYPE_RGBA,
24,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
2.双缓冲的使用
在OnPaint函数中画完场景后添加
this->DrawGLScene();
SwapBuffers(this->hDC);
http://www.cnblogs.com/phinecos/archive/2007/07/28/834916.html
发现拖动窗口时候有白条(抖动).
再看
http://www.cnblogs.com/phinecos/archive/2008/11/04/1326687.html
其中说到:
8
,试试改变窗口的大小,你会看到很严重的闪烁,并且关闭程序后会报告内存泄露,因此我们这就来解决这两个问题吧。
发生闪烁的原因是
Windows
先绘制背景,然后再是
OpenGL
绘制,因为我们已经让
OpenGL
负责清空背景色,因此我们不需要
Windows
去清空背景了
BOOL CCY457OpenGLView::OnEraseBkgnd(CDC
*
pDC)
{
//
Tell Windows not to erase the background
return
TRUE;
}
于是添加WM_ERASEBKGND消息处理,然后注意的地方是
1.像素格式
PIXELFORMATDESCRIPTOR pixelDesc =
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL |
PFD_DOUBLEBUFFER |PFD_STEREO_DONTCARE
, //不能同时使用 PFD_SUPPORT_GDI
PFD_TYPE_RGBA,
24,
0,0,0,0,0,0,
0,
0,
0,
0,0,0,0,
32,
0,
0,
PFD_MAIN_PLANE,
0,
0,0,0
};
2.双缓冲的使用
在OnPaint函数中画完场景后添加
this->DrawGLScene();
SwapBuffers(this->hDC);
相关文章推荐
- MFC与openGL结合拖放窗口,视图闪烁问题解决
- VC++2010环境下基于MFC框架的OpenGL的编程环境的配置
- 解决OpenGL在MFC下的闪烁问题
- VS2010使用C++/CLI编程窗口无法显示问题解决方法
- 如何解决Eclipse按"alt+/"后闪屏(窗口闪个不停/不停抖动)的问题
- 关于Windows编程(MFC、API等 自己明白就可)向窗口写内容不能立即显示的问题
- 关于ie6下拖动滚动条时,div抖动的问题解决
- 解决scrollview窗口滚动条拖动到下端却回到顶端的问题
- MFC编程急需解决的问题,求大家帮忙
- 解决系统窗口拖动不流畅的问题
- OpenGL+MFC导致闪烁、不刷新等问题的解决方法
- 彻底解决显示Opencv中Mat图像到Mfc窗口问题
- 基于MFC的OpenGL编程
- [转]MFC 窗口重绘问题,最小化消失的问题解决
- 窗口抖动问题思考与解决
- 解决CListCtrl闪烁及水平滚动条不能跟踪拖动的问题(MFC)
- Windows MFC 两个OpenGL窗口显示与线程RC问题
- 基于VC++ MFC环境的OpenGL编程入门---第一篇
- Windows MFC 两个OpenGL窗口显示与线程RC问题
- MFC 无标题栏窗口最大化会把任务栏给遮住,如何解决这个问题?