解決OpenGL在MFC下的閃爍問題

2021-07-08 12:35:13 字數 586 閱讀 9631

boolcopenglview::onerasebkgnd(cdc* pdc)

我們知道,在視窗中拖動乙個圖形的時候,由於邊畫邊顯示,會出現閃爍的現象。在gdi中解決這個問題較為複雜,通過在記憶體中生成乙個記憶體dc,繪畫時讓畫筆在記憶體dc中畫,畫完後一次用bitblt將記憶體dc「貼」到顯示器上,就可解決閃爍的問題。在opengl中,我們是通過雙快取來解決這個問題的。一般來說,雙快取在圖形工作軟體中是很普遍的。雙快取是兩個快取,乙個前台快取、乙個後台快取。繪圖先在後台快取中畫,畫完後,交換到前台快取,這樣就不會有閃爍現象了。

a:將畫素格式定義成支援雙快取的   pixeldesc.dwflags = pfd_draw_to_window | pfd_support_opengl |pfd_doublebuffer | pfd_stereo_dontcare;

b:在物體繪製完成後加入這樣一行**swapbuffers(hdc),到此opengl繪圖已經沒有閃爍了,但mfc還會反覆的重繪背景產生閃爍

c:處理訊息迴圈onerasebkgnd,使其不要重繪背景

bool coglview::onerasebkgnd(cdc* pdc)

這樣就徹底解決了閃爍問題!

OpenGL在MFC中的實現

1 在寫 之前,首先要做好opengl的環境配置。比如路徑之類,還有新增標頭檔案,標頭檔案新增在stdafx.h中,有位置要求,不能在 include 這句之上 這兩句加在 stdafx.h 裡面的 include 以上就會出現問題,需要加在這一句下面 include include 2 修改函式b...

MFC的Dialog下編寫OPENGL !

環境 vc6 1.新建 windows 的 dialog 體並可以執行!所有的設定全部為預設 2.新建 控制項 改id 為idc gl screen 3.新建類 cglscreen 其父類為 cwnd 4.新建函式 oninit cpaintdc dc this device context for...

MFC下OpenGL環境搭建

過載mfc中的wm crate訊息響應函式int oncreate lpcreatestruct lpcreatestruct 顯示呼叫init函式,如下 int c3dstereoview oncreate lpcreatestruct lpcreatestruct 在init函式 自定義的 中完...