OpenGL入门11——抗锯齿

转自:http://blog.csdn.net/fuyajun01/article/details/6853246

1.       使用颜色混合来消除一些锯齿, 主要针对点和线以及不相互重叠的多边形的反锯齿。

反锯齿设置代码如下:

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glEnable(GL_BLEND);

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);

取消反锯齿代码如下:

glDisable(GL_BLEND);

glDisable(GL_LINE_SMOOTH);

glDisable(GL_POINT_SMOOTH);

glDisable(GL_POLYGON_SMOOTH);

2.       多重采样(Multisample)

并不是所有的平台都支持通过颜色混合来消除多边形锯齿,此外,多边形混合还有顺序的问题,使用起来不方便。OpenGL引入了多重采样来解决多边形锯齿的问题,并增加了一个包含颜色、尝试以及模块缓存值的帧缓存。开启多重采样功能的代码如下:

//申请一个采用了双重缓存,包含颜色,深度的帧缓存和多重采样。

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH | GLUT_MULTISAMPLE);

   glEnable(GL_MULTISAMPLE);//开启多重缓存

   glDisable(GL_MULTISAMPLE);//关闭多重缓存

  

   注: 多重采样和混合不能同时开启, 这两种方法只能互斥使用。即使用任何一个方法前需要禁用另一个方法

补充:

在默认情况下,多重采样计算的覆盖值是独立于alpha值的,但是可以指定特殊模式,是计算片断覆盖值时考虑alpha值因素。

GL_SAMPLE_ALPHA_TO_COVERAGE、GL_SAMPLE_ALPHA_TO_ONE、GL_SAMPLE_COVERAGE。

void glSampleCoverage( GLclampf value, GLboolen invert);//设置参数,用于计算多重采样覆盖值时解释alpha值。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值