1,
glutSwapBuffers(); 是基于console的,應(yīng)為我是win32程序所以應(yīng)該用ms自帶的SwapBuffers(hdc);
2,
glutSwapBuff*ers執(zhí)行雙緩沖交換的時候,就隱形的執(zhí)行了一次刷新操作,就不用使用glFlush,如果兩個都使用了,會降低渲染幀率。
3,
OpenGL在繪圖上下文 Rendering Context (HGLRC)上繪圖。
程序運行過程中,可以有多個 DC,但只能有一個HGLRC。因此當一個 DC 畫完圖后,要立即釋放HGLRC,以便其它的 DC 也使用。
SwapBuffer:把HGLRC 上的繪制結(jié)果刷給HDC;
glFlush:將GL命令隊列中的命令發(fā)送給顯卡并清空命令隊列,發(fā)送完立即返回;
glFinish:將GL命令隊列中的命令發(fā)送給顯卡并清空命令隊列,顯卡完成這些命令(也就是畫完了)后返回。
在繪圖命令比較冗長的情況下,可以分段調(diào)用glFlush以清空命令隊列并讓顯卡開始先執(zhí)行這些命令,最后調(diào)用glFinish來同步。
然后調(diào)用wglSwapBuffer/glutSwapBuffers調(diào)換前后緩存。
4,
*SwapBuffer命令只是把前臺和后臺的緩沖區(qū)指針交換一下而已也就是把前臺的內(nèi)容變成后臺緩沖的內(nèi)容,
把后臺的緩沖內(nèi)容換到了前臺這個函數(shù)它本身并不對換過來的成為了后臺的buffer做清理工作,所以每幀都glClear一次,然后再繪制,而后再SwapBuffers。