OpenGL双缓冲
来源:互联网 发布:域名设置教程 编辑:程序博客网 时间:2024/06/05 17:11
1.双缓冲技术解决的问题
在计算机上的动画与实际的动画有些不同:实际的动画都是先画好了,播放的时候直接拿出来显示就行。计算机动画则是画一张,就拿出来一张,再画下一张,再拿出来。如果所需要绘制的图形很简单,那么这样也没什么问题。但一旦图形比较复杂,绘制需要的时间较长,问题就会变得突出。
让我们把计算机想象成一个画图比较快的人,假如他直接在屏幕上画图,而图形比较复杂,则有可能在他只画了某幅图的一半的时候就被观众看到。而后面虽然他把画补全了,但观众的眼睛却又没有反应过来,还停留在原来那个残缺的画面上。也就是说,有时候观众看到完整的图象,有时却又只看到残缺的图象,这样就造成了屏幕的闪烁。如何解决这一问题呢?我们设想有两块画板,画图的人在旁边画,画好以后把他手里的画板与挂在屏幕上的画板相交换。这样以来,观众就不会看到残缺的画了。这一技术被应用到计算机图形中,称为双缓冲技术,即:在存储器(很有可能是显存)中开辟两块区域,一块作为发送到显示器的数据,一块作为绘画的区域,在适当的时候交换它们。由于交换两块内存区域实际上只需要交换两个指针,这一方法效率非常高,所以被广泛的采用。
注意:虽然绝大多数平台都支持双缓冲技术,但这一技术并不是OpenGL标准中的内容。OpenGL为了保证更好的可移植性,允许在实现时不使用双缓冲技术。当然,我们常用的PC都是支持双缓冲技术的。
2.OPENGL使用双缓冲技术
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); //其中GLUT_SINGLE表示单缓冲,如果改成GLUT_DOUBLE就是双缓冲了。
glutSwapBuffers() //绘制完成后提交“画板”
当然还有需要更改的地方——每次绘制完成时,我们需要交换两个缓冲区,把绘制好的信息用于屏幕显示(否则无论怎么绘制,还是什么都看不到)。如果使用GLUT工具包,也可以很轻松的完成这一工作,只要在绘制完成时简单的调用glutSwapBuffers函数就可以了。
opengl中glPushMatrix()he glPopMatrix()用法小结 -- 我学院
如何理解OpenGL中着色器,渲染管线,光栅化等概念?
下载opengl的glut.h头文件和库 + 如何vs2013中配置OpengGL的编程环境
http://blog.csdn.net/KjfureOne/article/category/6564442
波兰式转为逆波兰式——2016年华为笔试最后一题
一只加班狗的絮絮叨叨
问题:
why使用双缓冲 / 矩阵栈只有3种 / 笛卡尔与齐次坐标转化 / 渲染管线过程 / 如何搭建环境
- 程序员源代码
阅读全文
0 0
- OpenGL--双缓冲
- 2.OpenGL--双缓冲
- OPENGL双缓冲
- OpenGL双缓冲
- opengl中的双缓冲技术
- 双缓冲绘图以及OpenGL中的双缓冲支持
- OpenGL单缓冲与双缓冲的区别
- OpenGL单缓冲与双缓冲的区别
- OpenGL单缓冲与双缓冲的区别
- OpenGL学习03_双缓冲DoubleBuffering
- 学习OpenGL(二)双缓冲绘图
- OpenGL学习03_双缓冲DoubleBuffering
- OPENGL的模板缓冲
- OpenGL 帧缓冲
- D3D或OpenGL GDI+的双缓冲技术
- opengl学习笔记(双缓冲与融合技术)
- opengl的一个简单的双缓冲程序!
- OpenGL中实现双缓冲技术的方法
- 中国剩余定理
- c++中的变量。
- JDK各版本的下载
- mui.openWindow参数
- 动态绑定与继承:不得不去想细节
- OpenGL双缓冲
- CS231n Spring 2017 Module1 翻译学习
- GameThoery
- 把成员函数转换为函数的代码。
- git命令操作
- CC2640R2F BLE5.0 CC2640R2F SPI驱动实现
- Android在线更新SDK的方法(使用国内镜像)
- Linux下Gcc生成和使用静态库和动态库详解(转)
- JSP编写定制标签之管理标签主体