1、什么抗锯齿?
抗锯齿(英语:anti-aliasing,简称AA),也译为边缘柔化、消除混叠、抗图像折叠有损等。它是一种消除显示器输出的画面中图物边缘出现凹凸锯齿的技术,那些凹凸的锯齿通常因为高分辨率的信号以低分辨率表示或无法准确运算出3D图形坐标定位时所导致的图形混叠(aliasing)而产生的,反锯齿技术能有效地解决这些问题。
2、抗锯齿出现的原因
在3D绘图时,每个图形由像素组成,每段瞬间画面由帧组成,因为屏幕上的像素有限,如果要表现出多边形的位置时,因技术所限,使用绝对坐标定位法是无法做到的,只能使用在近似位置采样来进行相对定位。由于没有足够的采样来表现出3D世界中的所有物品的图形,所以在最后图像显示上,这些现象便会造成在物品与物品中过渡的边缘就会产生波浪状、圆形、锯齿和闪烁等有损现象,严重影响了画面的质量。
3、解决方法
3.1、颜色混合
//开启混合处理理
glEnable(GL_BLEND);
//指定混合因⼦
GLBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
//指定混合⽅方程式
glBlendEquation(GL_FUNC_ADD);
glEnable(GL_POINT_SMOOTH); //对点进行抗锯⻮处理
glEnable(GL_LINE_SMOOTH);//对线进行抗锯齿处理
glEnable(GL_POLYGON_SMOOTH);//对多边形进行抗锯⻮处理
3.2、多重采样(默认是开启)
//1.可以调⽤用 glutInitDisplayMode 添加采样缓存区
glutInitDisplayMode(GLUT_MULTISAMPLE);
//2.可以使⽤用glEnable| glDisable组合使⽤用GLUT_MULTISAMPLE 打开|关闭 多重采 样。
glEnable(GLUT_MULTISAMPLE);
glDisable(GLUT_MULTISAMPLE);