您的位置:首页 > 编程语言

基于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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: