Opengl 使用GL_三角形_风扇消除混叠

Opengl 使用GL_三角形_风扇消除混叠,opengl,antialiasing,Opengl,Antialiasing,使用以下代码绘制GL_TRIANGLE_FANs时,我没有得到任何抗锯齿: 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_SMOOT

使用以下代码绘制GL_TRIANGLE_FANs时,我没有得到任何抗锯齿:

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

我做错了什么?

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

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

感谢您的快速回答。要得到我想要的混合,最简单的方法是什么?多采样通常会在modern上实现吗(这完全取决于您的平台。例如,如果您在linux上使用nvidia驱动程序,只需将_GL_FSAA_MODE环境变量设置为“4”提供了非常有用的结果,不用担心。ARB_multisample扩展在API上有文档,并且现在在大多数/所有硬件上都受支持。感谢您的快速回答。获得我想要的混合的最简单方法是什么?multisample通常会在modern上实现吗(这完全取决于您的平台。例如,如果您在linux上使用nvidia驱动程序,只需将u GL_FSAA_MODE环境变量设置为“4”即可获得非常有用的结果,而无需担心。ARB_multisample扩展在API上有文档,并且目前在大多数/所有硬件上都受支持。