使用OpenGL上下文調整win32窗口大小時,只會在新顯示的區域顯示黑色。 我確實在調整大小的同時收到WM_PAINT消息,並且嘗試渲染新內容,但看起來好像SwapBuffers在調整大小時不做任何事情。如何在調整win32窗口大小的同時繪製OpenGL內容
應該如何正確處理窗口大小調整,以便在調整大小時沒有「損壞」的內容?
使用OpenGL上下文調整win32窗口大小時,只會在新顯示的區域顯示黑色。 我確實在調整大小的同時收到WM_PAINT消息,並且嘗試渲染新內容,但看起來好像SwapBuffers在調整大小時不做任何事情。如何在調整win32窗口大小的同時繪製OpenGL內容
應該如何正確處理窗口大小調整,以便在調整大小時沒有「損壞」的內容?
如果您爲窗口類配置了背景畫刷(請參閱WNDCLASS或WNDCLASSEX結構),通常會發生這種情況。如果有刷子,系統將在每次重繪步驟後立即清除窗口,然後發送WM_PAINT。在V-Synced SwapBuffers的情況下,您的圖片可能在緩衝區交換髮生之前的下一個調整大小的步驟中,或剛好在它之後,但在該部分屏幕被髮送到顯示設備之前,已經被透支。
無論哪種方式,解決方案是將窗口的背景刷設置爲NULL。修改WM_ERASEBKGND消息處理可能會給出結果。
編輯因發表評論
如果最後一幀的內容保持可見,你可能只是還沒有反應過來與重繪調整。最簡單的解決方法是從WM_SIZING(或WM_SIZE,只需嘗試兩個)消息處理程序中調用繪圖函數。
*調整大小或調整大小後* – cHao
_While_調整大小。 – scoopr
相關:http://stackoverflow.com/questions/3267243/in-opengl-how-can-i-adjust-for-the-window-being-resized – zwcloud