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。

时间: 2024-08-01 22:47:18

Opengl_7_ *SwapBuffers的相关文章

outdated: 27.Shadows

这次的代码没有按照辅导代码中的来. VK_LEFT/VK_RIGHT/VK_UP/VK_DOWN控制长方体旋转,W/S/A/D/Q/E控制球移动,小键盘的8/5/4/6/7/9控制长方体移动,I/K/J/L/U/O控制光源移动. 在InitGLObject()函数中使用到的readObject()函数.setConnectivity()函数和calculatePlane()函数在3object.h中所写. readObject()函数在.txt文件中读取物体顶点数.顶点坐标.平面数.vertex

OpenGL学习系列第二篇

在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件. 代码的前4行包括了我们使用的每个库文件的头文件.如下所示: #include <windows.h>// Windows的头文件 #include <glew.h>       // 包含最新的gl.

VC++6.0中OpenGL应用程序开发

1. Win32控制台方式 建立Win32 控制台程序,在头文件中加入 #include <windows.h>  #include <wingdi.h>  #include <GL/gl.h>  #include <GL/glu.h >   #include <GL/glaux.h> 2. MFC方式 (1)采用VC AppWizard向导创建空的MFC(EXE)工程框架,整个过程总共6步,值得指出的是一般情况下在向导的第1步选择创建工程的模式

outdated: 4.Rotation

修改部分位于双行星号内. 1 #include <windows.h> 2 #include <gl/glew.h> 3 #include <gl/glut.h> 4 #include <GL/GLAUX.H> 5 6 /* 7 * Every OpenGL program is linked to a Rendering Context. 8 * A Rendering Context is what links OpenGL calls to the D

第三章:初始化 OpenGL 4.0

原文地址: http://www.rastertek.com/gl40tut03.html Tutorial 3: Initializing OpenGL 4.0 This tutorial will be the first real introduction to working with OpenGL 4.0. We will address three main things which are initializing OpenGL 4.0, shutting it down, and

Ogre 监听类与渲染流程

Ogre中有许多监听类,我们可以简单理解成C#中的事件,这些类作用都不小,说大点可能改变流程,说小点修改参数等,下面列举一些常用的监听类. FrameListener:由Ogre中的Root负责维护,主要针对所有RenderTarget监听 frameStarted:在一桢开始的时候,所有RenderTarget更新之前. frameRenderingQueued:所有RenderTarget更新之后,但是还没交换缓冲区.(意思屏幕上显示没变) frameEnded:所有RenderTarget

小菜学Chromium之OpenGL学习之二

在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件. 代码的前4行包括了我们使用的每个库文件的头文件.如下所示: #include <windows.h> // Windows的头文件 #include <glew.h>       // 包含最新的gl

小菜鸟学Chromium之OpenGL学习系列第二篇

在这个教程里,我们一起来玩第一个OpenGL程序.它将显示一个空的OpenGL窗口,可以在窗口和全屏模式下切换,按ESC退出.它是我们以后应用程序的框架. 在CodeBlock里创建一个新的GLUT Win32程序(不是console控制台程序)后,我们还需要链接OpenGL库文件. 代码的前4行包括了我们使用的每个库文件的头文件.如下所示: #include <windows.h>// Windows的头文件 #include <glew.h>       // 包含最新的gl.

Ogre Composition解析

Composition脚本与类型 上面是一个Composition资源.在解析时,主要是使用CompositionPass,CompositionTargetPass,CompositionTechnique,Compositor,而在渲染时,使用RenderSystemOperation,TargetOperation,CompositorInstance,CompositionChain.管理Composition用CompositionManage. Composition主要类型说明.