OpenGL中的多重采样
抗锯齿处理的最大优点之一就是它能够使多边形的边缘更为平滑,使渲染效果显得更为逼真和自然。点和直线的抗锯齿处理是得到广泛支持的,但遗憾的是,对多边形的平滑处理并没有在所有平台上都得到实现。并且,即使在可以使用GL_POLYGON_SMOOTH的时候,对整个场景进行抗锯齿处理也没有想象中的那么方便。这是因为,抗锯齿处理是基于混合操作的,这就需要从前到后对所有的图元进行排序,这是十分麻烦的。
在OpenGL中还有一个功能,称为多重采样(multisampling),可以用来解决抗锯齿处理中的这个问题。支持多重采样的OpenGL
实现中,在已经包含了颜色、深度、模板值的帧缓冲区中还会添加一个额外的缓冲区,所有的图元在每个像素上都进行多次采样,其结果就存储在这个新增的缓冲区中。每次当像素进行更新时,就会针对这些采样值进行解析,以产生一个单独的值。这个处理属于是在“幕后发生的事情”,它会带来额外的内存和处理器开销,会对性能造成一定的影响。因此,有些OpenGL实现可能并不支持多渲染环境中的多重采样处理。
为了进行多重采样,首先必须获得一个支持多重采样帧缓冲区的渲染环境,这在不同的平台中获取方法可能各不相同。GLUT提供了一个位段(GLUT_MULTISAMPLE),允许请求这种帧缓冲区。例如,为了请求一个多重采样、完全颜色、带深度的双缓冲帧缓冲区