Opengl_7_ *SwapBuffers
Posted 细语细语
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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。
以上是关于Opengl_7_ *SwapBuffers的主要内容,如果未能解决你的问题,请参考以下文章
计算机图形学输出图元_18_显示列表_3_删除 OpenGL 显示表
计算机图形学输出图元_18_显示列表_3_删除 OpenGL 显示表
计算机图形学输出图元_14_OpenGL像素阵列函数_1_位图函数