13

塗りつぶされた三角形をレンダリングするアルゴリズムはどこで入手できますか?Edit3:レンダリングにOpenGLを使用できません。これにはピクセルごとのアルゴリズムが必要です。

私の目標は、三角形から正多角形をレンダリングすることです。したがって、この三角形塗りつぶしアルゴリズムを使用すると、各三角形のエッジが重ならない(またはそれらの間にギャップができる)ことがありません。たとえば、使用するとレンダリングエラーが発生するためです。ピクセルをレンダリングするためのXOR。

したがって、レンダリング品質はOpenGLレンダリングと一致する必要があります。したがって、たとえば、N頂点を持つ円を定義でき、任意のサイズの円のように正しくレンダリングされます。そのため、一部の三角形塗りつぶしアルゴリズムのように、整数座標のみを使用してレンダリングするわけではありません。

自分で塗りつぶす三角形を制御する機能が必要になります。個々のピクセルがどのようにレンダリングされるかについて、独自のロジックを追加できます。したがって、レンダリングを完全に制御するには、レンダリングの背後にあるベアコードが必要です。おそらく1秒以上待たずに、何万もの三角形を描くのに十分効率的であるはずです。(せいぜいどれだけ速くできるかはわかりませんが、10秒以上かかることはないと思います)。

優先言語はC++ですが、他の言語を必要に応じて変換できます。

このための無料のアルゴリズムがない場合、どこで自分でアルゴリズムを構築することを学ぶことができますか、そしてそれは実際にどれほど難しいでしょうか?(me = math noob)。

これはどういうわけかそれに関連しているので、私はOpenGLタグを追加しました。

Edit2:ここでアルゴを試しました: http: //joshbeam.com/articles/triangle_rasterization/しかし、少し壊れているようです。これは、64個の三角形がレンダリングされた円です。 ここに画像の説明を入力してください

ただし、ズームインすると、エラーが表示されます。 ここに画像の説明を入力してください

説明:他の三角形の色と重なっている2つのピクセルがありますが、これは発生しないはずです。(または透明度やXORなどの効果は悪いレンダリングを生成します)。

エラーは小さな円でより目立つようです。ピクセルにXOR効果を持たせたい場合、これは受け入れられません。

これらを修正して、ピクセルやギャップが重ならないように完全に埋めるために何ができますか?

Edit4:非常に小さな円をレンダリングするのはあまり良くないことに気づきました。これは、座標が実際に整数に変換されたためだと気づきました。座標をフロートとして扱い、OpenGLの場合と同じように、円を正確かつ完全にレンダリングするにはどうすればよいですか?小さな円がどのように見えるかの例を次に示します。

ここに画像の説明を入力してください

OpenGLレンダリングがいかに完璧であるかに注目してください!それが、OpenGLを使わずに達成したいことです。注:完全な円をレンダリングするだけでなく、任意のポリゴン形状をレンダリングしたいと思います。

4

4 に答える 4

1

常に半角法があります。

于 2012-07-27T19:02:11.903 に答える
1

OpenGL は GPU を使用してこのジョブを実行します。これはハードウェアで高速化され、ラスタライズと呼ばれます。私の知る限り、ハードウェアの実装はスキャンライン アルゴリズムに基づいています。

于 2012-07-27T13:36:54.447 に答える
1

これは、アウトラインを作成してから水平線を埋めることによって行われていました。詳細については、このリンクを参照してください - http://joshbeam.com/articles/triangle_rasterization/

編集:これがあなたが求めている孤独なピクセルを生成するとは思わない.すべての行にピクセルがあるはずです.

于 2012-07-27T13:59:50.863 に答える