单缓存和双缓存
在我们电脑中,屏幕中显示的东西都会被放在一个称为显示缓存的地方,在通常情况下我们只有一个这样的缓冲区即单缓冲,在单缓冲中任何绘图的过程都会被显示在屏幕中,这也就是我们为什么会看到闪烁。而所谓双缓冲就是再这个显示的缓冲区之外再建立一个不显示的缓冲区,我们所有的绘图都将在这个不显示的缓冲区中进行,只有当一帧都绘制完了之后才会被拷贝到真正的现实缓冲区显示出来,这样中间过程对于最终用户就是不可见的了,那即使是速度比较慢也只会出现停顿而不会有闪烁的现象出现。
单缓存:帧缓存区开辟一个屏幕绘图缓存区。
双缓存:帧缓存区开辟两个屏幕绘图缓存区,交替使用,便于动画绘制 。
可以通过以下方法来设置窗口的展示模式为单缓冲或双缓冲
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glFlush(); //单缓冲的刷新模式;
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutSwapBuffers(); //双缓冲的刷新模式;
一般用OpenGL绘图都是用双缓冲,单缓冲一般只用于显示单独的一副非动态的图像。
使用深度测试函数:
在解决了闪烁的问题之后,我们来解决另一个问题:首先我们在窗口中画两个交叉的分别位于ZOX 和 ZOY 平面的长方形,并用不同的颜色填充它们,然后让它们旋转很快我们发现有个比较严重的问题,因为我们发