3

私の iPhone アプリケーションでは、多くの線が描かれています。残念ながら、それらのいくつかは垂直でも水平でもありません。つまり、エッジがギザギザになっています。

GL_LINE_SMOOTH を有効にしても効果がないようです。Apple のドキュメントに記載されているマルチサンプル アンチエイリアシングは機能しますが、見栄えの良い線を作成することが不可能だとは思えません。アンチエイリアシングを使用すると、線は滑らかになりますが、線のセクションに沿って色が歪んでしまいます。

OpenGL を使用して、Quartz-2D で描かれた線のように見える線を、滑らかな境界線、一貫した色、および可変幅でどのように描画できますか?

(明確にするために、GL_LINE_WIDTH は完全に機能するため、可変幅は現在問題ではありません。)

4

2 に答える 2

1

これは、3D グラフィックスでよくある問題です。ほとんどのグラフィックス カードは通常、基本的なジオメトリ レンダリングにおいて、視覚的な品質よりもフィル レートと速度に関心があります。Bresenham アルゴリズムを使用してラインとポリゴンを描画しますが、これはアンチ エイリアシングをサポートしていません。

3D API では、ビジュアル品質よりも速度を選択することは、実際には非常に合理的です。視覚的なディテールのほとんどは、最終的にジオメトリではなく (補間された) テクスチャの使用から生じるためです。

私の提案は、マルチサンプリングを有効にするか、累積バッファーを使用して手動で FSAA を実行することです (OpenGL ES で利用可能な場合)。または、意図した座標の周りで少し透明度を変えて、複数の線を描画しようとすることもできます。

于 2011-08-12T08:31:36.350 に答える
0

ファビアンが言ったことに加えて、ラインを滑らかにするためにアルファブレンディングを有効にして効果を表示する必要があるかもしれません。

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
于 2011-08-12T13:36:16.007 に答える