2

このコードで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);

私は何が間違っているのですか?

4

1 に答える 1

4

エッジ アンチエイリアシングは常にヒントです。実装 (どちらを指定しないか) は、仕様に従って自由に無視できます。さまざまな理由 (たとえば、交差するポリゴンを処理できない、フレームバッファー ブレンディングとの不適切な相互作用) により、この種のアンチエイリアシングは支持されなくなり、フレームバッファー レベルで機能するマルチサンプル ベースのアルゴリズムに置き換えられました。これを制御するためのARBマルチサンプル拡張機能があります(実際、最近のバージョンの仕様ではデフォルトになっていると思います)。または、多くの場合、ドライバーには、ソース コードを変更せずにグローバルに有効にする方法があります。

于 2012-07-01T04:37:24.593 に答える