[OpenGL] glFlush 和 glFinish 的區別

都是清空並執行緩衝區中的指令,那麼他們有什麼區別呢?函數

如下摘自 百度百科:百度

glFinish和glFlush的區別
咱們提交給OpenGL的繪圖指令並非立刻送給圖形硬件執行,而是放到一個緩衝區裏面,等待緩衝區滿了再將這些指令送給圖形硬件執行,因此指令較少或者簡單時是沒法填滿緩衝區的,天然這些指令不能立刻執行以達到所須要的效果。
所以每次在寫完繪圖代碼須要讓其完成效果時咱們須要在代碼後面添加glFlush()或gLFinish()函數:
(1)gLFlush()做用是將緩衝區中的指令(不管是否爲滿)馬上送給圖形硬件執行,發送完當即返回;
(2)glFinish()做用也是將緩衝區中的指令(不管是否爲滿)馬上送給圖形硬件執行,可是要等待圖形硬件執行完這些指令才返回。硬件

總結一下:
1)緩衝區中存放的是繪圖指令
2)緩衝區滿纔會執行其中的指令
3)指令太少或太簡單將沒法執行
4)so,須要用到glFinish 或 glFlush
5) 它們都會清空緩衝區,並執行其中的全部指令
6)區別是,glFinish會在執行完再返回,glFlush則會馬上返回。總結

相關文章
相關標籤/搜索