虽然一直用,不过发现理解不够,抽了个空,花费几个小时,整理了一下,若有错误,还望诸位多多指教
1.glFlush:从表面上看,就是刷新并清空缓存,只不过这里刷新的是opengl指令所在的缓存!也就是说opengl的指令会放在缓存中,最后一并执行(显然一条一条的执行会很慢)
,不过glFlush是异步的,并不会 等待所有指令都执行完毕才返回。
2.glFinish:作用跟glFlush一样,只不过是同步的,必须等到所有opengl指令及其指令所 影响到的地方全都执行完毕后,才会返回结果
3.双缓冲:frontBuffer(不管是不是双缓冲) 用于display,backBuffer用于draw。通过交换缓冲区,把backBuffer的内容放到front中,便显示到屏幕上了。但是换换缓冲区,有两种方向:
(1)交换两个缓冲区的指针,frontBuffer直接成为backBuffer,反之亦然
(2)内容拷贝,仅是把backBuffer的内容拷贝到frontBuffer
4.SwapBuffers:这是windows的方法,#inclucde<wingdi.h>,它采用了缓冲区交换的方法(2)内容拷贝
5.glutSwapBuffer:属于glut,它采用了缓冲区交换的方法(1)交换缓冲区指针。在该方法的最后调用glFlush来执行所有opengl指令把内容显示出来
6.如果不用双缓冲,那就是直接渲染到屏幕上,也就是直接draw到frontBuffer中