使用GL_TRIANGLE_FAN进行消除锯齿

时间:2012-07-01 04:30:07

标签: opengl antialiasing

使用此代码绘制GL_TRIANGLE_FAN时,我没有获得任何抗锯齿:

  glDisable(GL_DEPTH_TEST);

  // Blended points, lines, and polygons.
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

  glHint(GL_POINT_SMOOTH_HINT, GL_NICEST);
  glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
  glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);

  glEnable(GL_POINT_SMOOTH);
  glEnable(GL_LINE_SMOOTH);
  glEnable(GL_POLYGON_SMOOTH);

我做错了什么?

1 个答案:

答案 0 :(得分:4)

边缘抗锯齿始终是一个提示,实现(您没有指定哪个)可以根据规范自由忽略它。由于各种原因(例如,无法处理交叉多边形,与帧缓冲混合的不良交互),这种抗锯齿已经失宠,并被在帧缓冲级别工作的基于多样本的算法所取代。有一个ARB多重采样扩展来控制它(我相信它在规范的最新版本中是默认的,实际上)。或者,驱动程序通常可以在没有源代码修改的情况下全局启用它。