[解決済み] glPolygonOffsetのfactorパラメータの意味と使い方
質問
の最初のパラメーターの意味がよくわからないのですが。
glPolygonOffset
関数を使用します。
void glPolygonOffset(GLfloat factor, GLfloat units);
公式ドキュメント によると、その要因
各ポリゴンの可変深度オフセットを作成するために使用されるスケールファクターを指定します。
で、その
各フラグメントの奥行き値は、該当する頂点の奥行き値から補間された後、オフセットされます。ここで、DZはポリゴンの画面領域に対する奥行きの変化の測定値、rは与えられた実装で解決可能なオフセットを生成することが保証されている最小の値である。
を理解しました。
r
と
unit
があります。私が理解できないのは
DZ
は、つまり、ポリゴンの画面領域に対する深度値の変化の測定は何を意味するのか、そして、なぜfactorを0以外に設定する必要があるのか、ということです。
ワイヤーフレームをオフセットさせたい場合、必要なのは深度値に数単位を加算/減算することだけですよね? factorパラメータ(およびドキュメントにあるDZ)の意味、目的、使用例について教えてください。
どのように解決するのですか?
私はここでいくつかの無知を認めなければならないが、私は見つけた。 この記事 というのがあり、それについて説明しています。彼らが言うには
ハイライトされたソリッドオブジェクトをビジュアルアーチファクトなしできれいにレンダリングするには、ソリッドオブジェクトに正のオフセットを加える(自分から遠ざける)か、ワイヤーフレームに負のオフセットを加える(自分に向かって引っ張る)かのどちらかを選択します。残念ながら、必要なオフセットは、各ポリゴンの深度スロープやワイヤフレーム内の線の幅など、さまざまな要因に依存します。
そして、奥行きの傾斜をこのように説明しています。
深度勾配とは、ポリゴンを横断する際のz(深度)値の変化を、xまたはy座標の変化で割ったものです。深度の値はウィンドウ座標で、範囲 [0, 1] にクランプされています。ポリゴンの最大深度勾配(オフセット方程式のm)を推定するには、次の式を使用します: m = max {|delV / delS|,|delV / delT|}. (ここで、delは偏微分)
という結論になるそうです。
近景と遠景のクリッピング平面に平行なポリゴンでは、深さの傾きはゼロになります。[クリッピング平面に対して大きな角度を持つポリゴンでは,奥行き勾配が0よりかなり大きくなり,より大きなオフセットが必要になる場合があります.0.75や1.0のような小さなゼロでない値をfactorに設定すれば、おそらく明確な深度値を生成し、不快な視覚的アーティファクトを除去するのに十分でしょう。
関連
-
[解決済み] Connect: ソケット以外でのソケット操作
-
[解決済み】初期化がキャストなしで整数からポインタを作成 - C言語
-
[解決済み] struct で "warning: useless storage class specifier in empty declaration" (警告: 空の宣言での無駄なストレージクラス指定子)
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] const int*、const int * const、int const *の違いは何ですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】昔々、>が<より速かった頃・・・。待って、何?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 error: too few arguments to function `printDay' (C言語)
-
[解決済み】スレッド1:EXC_BAD_ACCESS(コード=1、アドレス=0x0)標準Cメモリ問題
-
[解決済み】 「配列のイニシャライザーはイニシャライザーリストまたは文字列リテラルでなければなりません」と表示されるのですが?
-
[解決済み】fgetsによるセグメンテーションフォールト(コアダンプ) - と思う。
-
[解決済み】sizeof float (3.0) vs (3.0f)
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】.axfファイルとは何ですか?
-
[解決済み】execvp: バッドアドレスエラー
-
[解決済み】配列型char[]が代入できない [重複]。