都是清空并执行缓冲区中的指令,那么他们有什么区别呢?

以下摘自 百度百科:

glFinish和glFlush的区别
我们提交给OpenGL的绘图指令并不是马上送给图形硬件执行,而是放到一个缓冲区里面,等待缓冲区满了再将这些指令送给图形硬件执行,所以指令较少或者简单时是无法填满缓冲区的,自然这些指令不能马上执行以达到所需要的效果。
因此每次在写完绘图代码需要让其完成效果时我们需要在代码后面添加glFlush()或gLFinish()函数:
(1)gLFlush()作用是将缓冲区中的指令(无论是否为满)立刻送给图形硬件执行,发送完立即返回;
(2)glFinish()作用也是将缓冲区中的指令(无论是否为满)立刻送给图形硬件执行,但是要等待图形硬件执行完这些指令才返回。

总结一下:
1)缓冲区中存放的是绘图指令
2)缓冲区满才会执行其中的指令
3)指令太少或太简单将无法执行
4)so,需要用到glFinish 或 glFlush
5) 它们都会清空缓冲区,并执行其中的所有指令
6)区别是,glFinish会在执行完再返回,glFlush则会立刻返回。


freecode
108 声望9 粉丝

凡不能毁灭你的,必将成就你


引用和评论

0 条评论