opengl 入门学习 随笔十一
来源:互联网 发布:怎么设计一个软件 编辑:程序博客网 时间:2024/05/18 09:17
其实动画就是将画面逐个的播放,原理非常简单,一旦一秒钟显示超过24幅画面,人眼就会错认为是连续的。
实际的动画是画好了,然后直接在显示出来就好;计算机是画一幅,拿出来一幅;再画一幅,再拿出来一幅。
有可能发生这样一种情况,计算机画图比较快,如果直接在显示器上画画,那么有可能有的图形画到一半让观众看到了,而后面虽然画全了,但是人眼没有反应过来,依然停留在那个残缺的画面。解决这个问题就是双缓冲技术。即,一个用于画画,一个用于显示。将两个缓冲交换,在空闲的缓冲区中作画。交换两个缓冲只需交换两个指针,所以效率非常高。
接下来的思路就是,计算机在什么时间作画,意思就是cpu同时运行了多个程序,那么只可能在空闲的时候画画。
glInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);glutIdleFunc(&myIdle);void myDisplay(){......glFlush();glSwapBuffers();//启用双缓冲要记得交换缓冲}第一句中的GLUT_DOUBLE表示双缓冲,GLUT_SINGAL表示单缓冲。
第二句就表示在空闲的时候画画,其中myIdle函数中包含myDisplay函数。
其次介绍帧率的概念:一秒钟显示多少幅画面;思路:我们求出50幅画面一共用了多少时间,
这样能算出相邻两幅画面的时间,这就是频率,因此可以算出帧率。
double CalFrequency(){static int count;static double save;static clock_t last,current;double timgap;++count;if(count<=50)return save;count =0;last = current;current = clock();timegap = (current - last)/(double)CLK_TCK;save = 50.0/timegap;return save;}这就是计算帧率的函数,其实就是获得两个时间,一个是执行前的,和执行到50帧画面时的。
0 0
- opengl 入门学习 随笔十一
- OpenGL入门学习[十一]
- opengl 入门学习 随笔五
- opengl 入门学习 随笔六
- opengl 入门学习 随笔七
- opengl 入门学习 随笔八
- opengl 入门学习 随笔九
- opengl 入门学习 随笔十
- opengl 入门学习 随笔十二
- opengl 入门学习 随笔十三
- opengl 入门学习 随笔十四
- OpenGL入门学习(十一)
- OpenGL入门学习(十一)
- OpenGL入门学习(十一)
- OpenGL入门学习(十一) 【转】
- OpenGL入门学习[十一 03]bmp纹理
- OpenGL入门学习[十一 04]jpeg纹理
- OpenGL入门学习[十一 01] OpenGL纹理映射功能
- 常用集合ArrayList,LinkedList,HashMap,HashSet源码分析
- Android 代码混淆 proguard.flags
- Silverlight & Blend动画设计系列三:缩放动画(ScaleTransform)
- linux ssh命令
- 又一天
- opengl 入门学习 随笔十一
- 什么场合需要使用GPRS DTU?
- Join的实现原理及优化思路
- 利用.dSYM和.app文件准确定位Crash位置
- LVS简介及使用
- 2003 -can't connect to mysql server on ‘localhost'(10061)
- socket和serversocket
- 为什么要encodeURI(url)两次才不会出现乱码
- python程序有问题:错误提示:IndentationError:expected an indented block!