Opengl_7_ *SwapBuffers

1,


glutSwapBuffers(); 是基于console的,应为我是win32程序所以应该用ms自带的SwapBuffers(hdc);


2,
glutSwapBuff*ers执行双缓冲交换的时候,就隐形的执行了一次刷新操作,就不用使用glFlush,如果两个都使用了,会降低渲染帧率。



3,
OpenGL在绘图上下文 Rendering Context (HGLRC)上绘图。
程序运行过程中,可以有多个 DC,但只能有一个
HGLRC。因此当一个 DC 画完图后,要立即释放 HGLRC,以便其它的 DC 也使用。
SwapBuffer:把
HGLRC 上的绘制结果刷给HDC;
glFlush:将GL命令队列中的命令发送给显卡并清空命令队列,发送完立即返回;
glFinish:将GL命令队列中的命令发送给显卡并清空命令队列,显卡完成这些命令(也就是画完了)后返回。

在绘图命令比较冗长的情况下,可以分段调用glFlush以清空命令队列并让显卡开始先执行这些命令,最后调用glFinish来同步。
然后调用wglSwapBuffer/
glutSwapBuffers调换前后缓存。


4,
*SwapBuffer命令只是把前台和后台的缓冲区指针交换一下而已也就是把前台的内容变成后台缓冲的内容,
把后台的缓冲内容换到了前台这个函数它本身并不对换过来的成为了后台的buffer做清理工作,所以每帧都glClear一次,然后再绘制,而后再SwapBuffers。

posted @ 2017-01-23 18:15  细雨细语  阅读(1428)  评论(0编辑  收藏  举报