OpenGL 反锯齿的一些措施

 

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);//关闭多重缓存

  

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

 

你可能感兴趣的:(Blend,平台)