我们先来绘制一条线段如下图:
我们可以看到在线段上有很多小锯齿一样的东西,我们可以用OpenGL的抗锯齿模式来减小这种影响
开启抗锯齿
// 开启抗锯齿
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_POINT_SMOOTH);
glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
glEnable(GL_POLYGON_SMOOTH);
glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
首先我们开启混合模式,并设置混合函数,混合在上一节中已讲过
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
1.开启点平滑:
glHint(GL_POINT_SMOOTH,GL_NICEST); //告诉opengl以显示效果为重,速度不重要
glEnable(GL_POINT_SMOOTH);
2.开启线平滑
glHint(GL_LINE_SMOOTH,GL_NICEST);//告诉opengl以显示效果为重,速度不重要
glEnable(GL_LINE_SMOOTH);
3.开启面平滑
glHint(GL_POLYGON_SMOOTH,GL_NICEST);//告诉opengl以显示效果为重,速度不重要
glEnable(GL_POLYGON_SMOOTH);
关闭抗锯齿
// 关闭抗锯齿
glDisable(GL_BLEND);
glDisable(GL_LINE_SMOOTH);
glDisable(GL_POINT_SMOOTH);
glDisable(GL_POLYGON_SMOOTH_HINT);
下图是开启抗锯齿后的效果
锯齿没有那么明显了