2012-02-21 13 views
0

いくつかのレンダリング作業をOpenGLでテストしていますが、プレーンを形成する細長いポリゴンに問題があることに気付きました。したがって、長いポリゴンの2つを直接隣り合わせに配置すると、長い側でスナップして、エッジのピクセルの一部が見えなくなることに気付きました。これらの不可視のピクセルは、カメラを動かすと動きます。スライバのOpenGLレンダリングとラスタライズ

これは、これらの「スライバ」ポリゴンの端にあるピクセルが、この特定のビュー角度でそのポリゴン内にないとラスタライザが考えるため、非表示になるためです。

私が理解できなかったことは、そのポリゴンの端に直接ピクセルを置くようにOpenGLに指示する方法です。

私の問題の説明がちょっと変わった場合は、http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008/slides/week5.day3-4x4.pdfページ27以降を参照してください。それが私の言いたいことです。

EDITは:[OK]を私は、私は私がアンチエイリアシング技術とそれをアドレス傾ける気持ちを持っているので、私は把握していなかった何

aaa|b|cc 
aaa|b|cc 
aaa|b|cc 
^^ 
    1 2 

- the polygons a, b and c form a plane 
- some pixels at edge 1 and 2 are invisible at certain camera angles 
+0

これらのアーチファクトは、通常、オーバーサンプリングを有効にすることで低減できます。解決策ではありません。 – PeterT

+0

オーバーサンプリングで「アンチエイリアス」を意味しますか?例えばGL_POLYGON_SMOOTH? – cdx

+0

@cdx:ほとんどのFSAA、すなわちマルチサンプリングが意味されていました。 – datenwolf

答えて

1

があり、私の問題が何であるかを明確にすることがあると思いますOpenGLにポリゴンの端に直接ピクセルを置くように指示する方法。

一般に、あなたはしません。 OpenGLが三角形の一部が薄すぎて与えられた解像度でレンダリングできないと考えると、レンダリングするには薄すぎます。この問題の一般的な形は「エイリアシング」と呼ばれます。

解決策は、アンチエイリアス技術を使用することです。例えば、マルチサンプリング。コンテキストを作成するときは、使用するサンプル数を選択します。

関連する問題