質問

私はOpenGLを初めて使用しており、Redbookを読んでいます。さて、運動として、私は手動で球体を描きたいと思っています。そのためには、球をスライスとスタックに分割しているため、複数の長方形が得られますが、球体の極の近くで三角形が得られます。 (これが私がしていることは明確だったことを願っています)。今、私はあなたがGL_Polygonでポリゴンを描き、それがそれ自体を交差させるために起こると、動作は未定義であることを知っています。私の質問は次のとおりです。3つのポイントV1、V2、V3が1行にないことを考えると、これを行うことは未定義の動作です。

glBegin(GL_POLYGON)
vertex v1
vertex v1
vertex v2
vertex v3
glEnd();

これは2つの無関係な質問を1つに組み合わせることができますが、私はこれも疑問に思っています:球体の長方形を三角形に分割することを選択した場合、それは私がそれをどのように行うかは重要です。 2つの三角形?単一色の球体を描くことは重要ではないと推測していますが、テクスチャ、シェーダー、照明などについては知りません。

役に立ちましたか?

解決

これはまったく問題ありません。 OpenGLは、モデルビューと投影行列(またはジオメトリおよび/または頂点に応じて異なる入力ポイントでさえ同じ出力ポイントとして終了する可能性があるため、複数の頂点が同じ場所に落ちるラスタージオメトリの可能性に常に対処できる必要があります。プログラム可能なパイプラインにいる場合はシェーダー)。さまざまなエッジケースの下で数学的に正しい方法で処理するように設計されています。

ジオメトリでピクセルをペイントするかどうかについてのOpenGLの主要なテストは、その中心が描画される原始の数学的境界内に収まるかどうかです*。したがって、OpenGLは、非連続したピクセルのセットをペイントするポリゴンをレンダリングすることができます(これは一般的にほとんど消滅して薄くなったときに発生します)。サイズは、ピクセルセンターの間を絞る限り)。

ハードウェアレベルで使用される正確なテストは、ベンダーごとに異なる場合があり、画面上で凸状のジオメトリに対してのみ正しいことが保証されている可能性があります。そのため、ほとんどの人は避けられないほど凸であるため、三角形に固執します。

(*)ポリゴンが共通のエッジに沿って出会う正確なポリゴンのみに起因することを確認するために、境界上で正確にピクセルに適用されている個別のスクリーン指向テストが境界に正確に適用されます

他のヒント

OpenGLのことをしていたとき、私はすぐに三角形だけを使用することに固執しました。彼らは、三角形が決して曖昧ではないという点で特別です。

例えば、おそらくアーティファクトではこれが機能すると思います。

長方形をどのように分割するかは重要ではありません。あなたの三角形がどのように傷ついているかに注意を払う限り、これはポイントを定義します。

しかし、間違いなく三角形に固執し、正方形のこれらの4つのポイントを画像化します

(0,0,0) (1,0,0) (1,0,1) (0,0,1)

かなり簡単に見るのは平らな正方形ですが、私がそれらを変更した場合はどうなりますか

(0,1,0) (1,0,0) (1,1,1) (0,0,1)

あなたは今何を持っていますか?それは谷のように描かれたり、丘のように描かれたりすることができます。この形状を三角形で定義した場合、あなたは私が説明していることを正確に知っています

(0,1,0) (1,0,0) (1,1,1) (1,1,1) (1,0,1) (0,1,0)

丘のような形

わかりました...だから私はここで少し追跡しました...私のポイントは、あなたのコードが実際に何をするかわからないということですが、あなたはそれをどんな方法でも使用すべきではないと思います。そして、あなたの三角形が正しい方法で説明されている限り、長方形をどのように分割するかは問題ではありません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top