OpenGL(四)-两种方式实现抗锯齿效果

方式一 : 利用混合(GLBlend)实现抗锯齿

核心代码如下:

// 选择菜单
void ProcessMenu(int value)
{
    switch (value) {
        case 1:
            //打开抗锯齿功能
            //1.开启混合功能
            glEnable(GL_BLEND);
            
            //2.指定混合因子
            //注意:如果你修改了混合方程式,当你使用混合抗锯齿功能时,请一定要改为默认混合方程式
            glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
            
            //3.开启对点\线\多边形的抗锯齿功能
            glEnable(GL_POINT_SMOOTH);
            glEnable(GL_LINE_SMOOTH);
            glEnable(GL_POLYGON_SMOOTH);
            
            break;
        
        case 2:
            //关闭抗锯齿功能
            glDisable(GL_BLEND);
            glDisable(GL_LINE_SMOOTH);
            glDisable(GL_POINT_SMOOTH);
            glDisable(GL_POLYGON_SMOOTH);
            
            break;
        default:
            break;
    }
    
    glutPostRedisplay();
}

方式二 : 利用多重采样实现抗锯齿

//用多重采样来解决锯齿问题.可选
    glEnable(GLUT_MULTISAMPLE);
    
    //绘制
    moonBatch.Draw();
    
    //绘制完成,则关闭
    glDisable(GLUT_MULTISAMPLE);

效果图:

  • 关闭抗锯齿:


    关闭抗锯齿.png
  • 打开抗锯齿:


    打开抗锯齿.png

你可能感兴趣的:(OpenGL(四)-两种方式实现抗锯齿效果)